在sql server中从real转换为money数据类型时,你是否会失去精度?

时间:2009-03-16 11:13:26

标签: sql-server database types

我有一个包含实数数据类型的数据字段的表。转换为money或decimal数据类型时会丢失精度吗?

2 个答案:

答案 0 :(得分:4)

这取决于您为小数类型指定的精度和比例。例如,如果您有decimal(19,2)并尝试转换real号码1.123,则会获得值1.12

decimal类型的精度高于real类型,因此它能够处理其范围内的任何real值,而不会失去精度。

money类型可以保存与小数(19,4)相同的数据。

decimalmoney类型是确切类型,而real是近似类型。如果您将real转换为decimal,则可能会看到与您在real值中看不到的值,但这是因为real值已四舍五入当它显示时,decimal值不是。

答案 1 :(得分:2)

Float(4)(aka real)和float(8)是IEEE 754浮点类型。 使用它们来表示货币价值是错误的。它们用于计算,其中值具有较大的动态范围,同时以相对较少的字节存储。浮点数的使用以及它们的准确性和准确性本身就是一门科学,并不容易解释。