Почему при преобразовании SQL Real в Numeric масштаб немного увеличивается? - PullRequest
0 голосов
/ 17 апреля 2019

Я храню значение (0,15) как реальный тип данных в поле количества в SQL.

Просто играя, когда я разыгрываю как числовой, есть некоторые очень небольшие изменения в масштабе.

Я не уверен, почему это происходит, и почему именно эти цифры?

select CAST(Quantity AS numeric(18,18)) -- Quantity being 0.15

возвращает

 0.150000005960464480

1 Ответ

1 голос
/ 17 апреля 2019

Real и float - приблизительные цифры, а не точные. Если вам нужны точные, используйте DECIMAL. Преимущество оценочных значений состоит в том, что они позволяют хранить очень большие числа, используя меньше байтов памяти. https://docs.microsoft.com/en-us/sql/t-sql/data-types/float-and-real-transact-sql?view=sql-server-2017

PS: числовые и десятичные числа являются синонимами.

PS2: см. Пояснительный комментарий Эрика Постпишил ниже: «Число с плавающей запятой и вещественное число представляют число как значение, умноженное на степень два. Десятичное число представляет число как значение, умноженное на степень десять. Оба средства представления неспособны представить все действительные числа, и оба средства представления являются предметом к ошибкам округления. Как я писал, деление 1 на 3 в десятичном формате будет иметь ошибку округления "

...