使用列类型“real”查询返回意外值

时间:2014-10-15 01:50:09

标签: sql sql-server

使用SQL Server 2008 R2,我有一个名为'Value'的列的表,其类型为'real'。 如果我进行如下查询:

select * from tableName where Value = 1234567.12

查询返回一个值为1234567

的结果集

为什么这样做?它不仅应该返回正好1234567.12的值吗?

1 个答案:

答案 0 :(得分:2)

real数据类型is equivalent to float(24)仅提供大约七位精度的十进制数字,并且您似乎在您的非小数部分中使用了该精度号。

如果您想要更精确,可以选择float(53)或更具体的类型,例如float(42)

事实上,我甚至建议使用这些浮点值并不是一个好主意。您可以使用更多精确类型,这些类型不会向您介绍有限浮点精度的痛苦。

请查看其中某些类型的this page上的“确切数字”部分,例如bigint表示整数,或decimal/numeric表示实数。