SQL 服务器循环功能问题

SQL Server Round Function Issue

我正在使用 SSMS 2014,我在 SampleTable 中对列 (FLOAT) 进行四舍五入时遇到问题。如果您注意到下面的四舍五入,7.725 应该是 7.73,但输出是 7.72,这是错误的。希望你能帮我解决这个问题。

代码

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。

如果这在您的应用程序中很重要,您可以考虑改用 decimal 类型,它允许精确表示任何十进制数(达到指定的精度)。