我进行了一些浮点数计算测试,以最小化精度损失。我遇到了一个现象,在这里展示并希望得到解释。
当我写出:
当我写出:
print 1.0 / (1.0 / 60.0)
结果是
60.0024000960
当我写相同的公式并进行显式转换为float
时。print cast(1.0 as float) / (cast(1.0 as float) / cast(60.0 as float))
结果是
60
直到现在我一直认为带有小数位的数字文字会自动被视为具有适当精度的 float
值。将其强制转换为 real
和强制转换为 float
的结果相同。
- 是否有关于 SQL Server 如何评估数字文字的文档?
- 这些文字的数据类型是什么?
- 我真的需要将它们强制转换为
float
才能获得更好的精度吗(这听起来很讽刺)? - 除了在公式中添加强制转换,是否有更简单的方法?