SQL: Что вы используете для хранения отношения (процент) в базе данных? - PullRequest
2 голосов
/ 31 января 2009

Должен ли я использовать десятичное число или число с плавающей запятой для хранения отношения в базе данных? Особенно в SQL2005.

Ответы [ 5 ]

5 голосов
/ 31 января 2009

Это зависит от того, что вам нужно для точности. Если вы можете допустить типичные ошибки, возникающие из-за метода IEEE хранения чисел с плавающей запятой, то используйте число с плавающей запятой, в противном случае используйте десятичное число, если вам нужно точное представление (и это относится к любым числам, которые не являются целыми числами, которые вы будете использовать в расчетах с использованием также процента).

2 голосов
/ 01 февраля 2009

На самом деле это зависит от того, какое у вас соотношение.

Для процентных ставок, например, в банковской сфере, мы всегда используем десятичную дробь с точностью и масштабом, определяемыми бизнесом. Если процентная ставка должна быть рассчитана, а результат выходит за пределы точности столбца, то всегда существует бизнес-правило, которое определяет, как результат должен быть округлен или усечен для соответствия столбцу.

Если ваше отношение, например, равно соотношению между диаметром объекта и его окружностью, я бы, вероятно, использовал плавающее число.

1 голос
/ 01 февраля 2009

Зависит от вашего приложения. Если вы используете числа с плавающей точкой, чтобы вычислить все, что связано с этим отношением, возможно, имеет смысл сохранить его как число с плавающей точкой.

Но в остальном с плавающей точкой, как правило, немного похоже на запах базы данных. Администраторы баз данных их не любят, потому что неточности монтажа означают, что числа с плавающей запятой по своей сути несовместимы. И это противоречит «непоследовательности» нашего возлюбленного КИСЛОТА .

Десятичные дроби и масштабные числа, по крайней мере, ведут себя предсказуемо.

0 голосов
/ 31 января 2009

Я никогда не использую числа с плавающей точкой в ​​базе данных, может быть, это старая привычка, к которой относится технология, я не уверен на 100%.

Либо целые, масштабированные целые или десятичные числа. Бывают случаи, когда ошибка округления кажется незначительной, но она может не совпадать с определенными значениями или вносить накопительные ошибки.

0 голосов
/ 31 января 2009

Зависит от того, насколько точно вы хотите, чтобы это было. Если вам нужны 1 или 2 цифры, и вы знаете, что максимальное отношение будет ниже maxint / 1000, я бы подумал о сохранении отношения, умноженного на 100, в int. Если вам нужны точные числа, вы можете даже сохранить числитель и знаменатель как отдельные целые числа. В противном случае, придерживайтесь поплавков или удваивается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...