使用SQL Server 2008 R2,我有一个名为'Value'的列的表,其类型为'real'。 如果我进行如下查询:
select * from tableName where Value = 1234567.12
查询返回一个值为1234567
为什么这样做?它不仅应该返回正好1234567.12
的值吗?
答案 0 :(得分:2)
real
数据类型is equivalent to float(24)
仅提供大约七位精度的十进制数字,并且您似乎在您的非小数部分中使用了该精度号。
如果您想要更精确,可以选择float(53)
或更具体的类型,例如float(42)
。
事实上,我甚至建议使用这些浮点值并不是一个好主意。您可以使用更多精确类型,这些类型不会向您介绍有限浮点精度的痛苦。
请查看其中某些类型的this page上的“确切数字”部分,例如bigint
表示整数,或decimal/numeric
表示实数。