我有一个包含实数数据类型的数据字段的表。转换为money或decimal数据类型时会丢失精度吗?
答案 0 :(得分:4)
这取决于您为小数类型指定的精度和比例。例如,如果您有decimal(19,2)
并尝试转换real
号码1.123
,则会获得值1.12
。
decimal
类型的精度高于real
类型,因此它能够处理其范围内的任何real
值,而不会失去精度。
money
类型可以保存与小数(19,4)相同的数据。
decimal
和money
类型是确切类型,而real
是近似类型。如果您将real
转换为decimal
,则可能会看到与您在real
值中看不到的值,但这是因为real
值已四舍五入当它显示时,decimal
值不是。
答案 1 :(得分:2)
Float(4)(aka real)和float(8)是IEEE 754浮点类型。 使用它们来表示货币价值是错误的。它们用于计算,其中值具有较大的动态范围,同时以相对较少的字节存储。浮点数的使用以及它们的准确性和准确性本身就是一门科学,并不容易解释。