Вы теряете точность при преобразовании из реального в денежный тип данных на сервере SQL? - PullRequest
1 голос
/ 16 марта 2009

У меня есть таблица с полями данных в реальном типе данных. Вы теряете точность при конвертации в деньги или десятичный тип данных?

Ответы [ 2 ]

4 голосов
/ 16 марта 2009

Это зависит от точности и масштаба, которые вы указали для десятичного типа. Например, если у вас есть decimal(19,2) и вы пытаетесь преобразовать real число 1.123, вы получите значение 1.12.

Тип decimal имеет более высокую точность, чем тип real, поэтому он способен обрабатывать любое значение real, находящееся в его диапазоне, без потери точности.

Тип money может содержать те же данные, что и десятичное число (19,4).

Типы decimal и money являются точными, а real - приблизительным. Если вы преобразуете real в decimal, вы можете увидеть значение, которое не совсем то, что вы видите в значении real, но это потому, что значение real округляется при его отображении и decimal значение не.

2 голосов
/ 19 июня 2009

Float (4) (он же настоящий) и float (8) являются типами с плавающей точкой IEEE 754 Ошибочно использовать их для представления денежных значений . Они предназначены для вычислений, в которых значения имеют большой динамический диапазон при хранении в относительно небольшом количестве байтов. Использование чисел с плавающей запятой и то, насколько они точны и точны, само по себе является наукой, и ее трудно объяснить.

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