我正在使用SSMS 2014,在SampleTable
中对列(FLOAT)进行四舍五入时出现问题。如果您在下面的舍入中发现7.725应该是7.73,但输出是7.72,这是错误的。希望您能帮助我解决此问题。谢谢!
CODE
SELECT date, ROUND(timeelapsed, 2) AS RoundedValue, timeelapsed
FROM SampleTable
输出
date RoundedValue timeelapsed
----------------------------------------
2020-02-03 2.78 2.781944445
2020-02-05 0.43 0.433333333
2020-02-06 8.67 8.670833334
2020-02-07 5.78 5.783055556
2020-02-08 2.43 2.431111111
2020-02-09 7.72 7.725
2020-02-10 4 3.996388889
问题是7.725不能精确地表示为浮点数。
换句话说,浮点值略小于7.725,因为它比7.73更接近7.72,所以结果为7.72。
另一方面,可以精确表示7.025,这将舍入为7.03。
如果这在您的应用程序中很重要,您可以考虑改用十进制类型,它允许任何十进制数字的精确表示(达到指定的精度)。