在SQL 2005中将float(24)值转换为float(53)时的值错误

时间:2009-11-13 22:34:58

标签: sql sql-server-2005

我在SQL 2005中运行此sql代码

declare @a as float(24)
set @a=0.85
select cast ( @a as float(53))

,结果是

  

0.850000023841858

有谁知道为什么?

感谢。

2 个答案:

答案 0 :(得分:2)

前七个数字是浮点数的默认精度等级,在声明浮点数(N)中,N的值为24或更小。在那之后,当转换为更高精度的浮点数时,数字可以显示为几乎任何东西。这就是'浮点'。

http://msdn.microsoft.com/en-us/library/ms173773.aspx

答案 1 :(得分:1)

您看到的数字尽可能接近计算机可以使用的数字,但可以使用许多二进制数字。

如果您尝试以十进制编写1/3,但只有8位数的空间,则最接近的是0.33333333。这仍然是一个很好的方式,但如果你有更多的小数位,你可以得到更准确。这与计算机面孔完全相同,但每个连续数字代表1/10,1 / 100th,1 / 1000ths,计算机工作在1 / 2,1 / 4,1 / 8,1 / 16