[英]SQL Server Round Function Issue
我正在使用 SSMS 2014,在我的SampleTable
中舍入列( FLOAT
)时遇到问题。 如果您注意到下面的四舍五入,7.725 应该是 7.73,但 output 是 7.72,这是错误的。 希望你能帮我解决这个问题。
代码
SELECT date, ROUND(timeelapsed, 2) AS RoundedValue, timeelapsed
FROM SampleTable
OUTPUT
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。
如果这在您的应用程序中很重要,您可以考虑改用小数类型,它允许精确表示任何十进制数(直到指定的精度)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.