SQL Server舍入函数问题

问题描述 投票:0回答:1

我正在使用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
sql sql-server floating-point decimal rounding
1个回答
0
投票

问题是7.725不能精确地表示为浮点数。

换句话说,浮点值略小于7.725,因为它比7.73更接近7.72,所以结果为7.72。

另一方面,可以精确表示7.025,这将舍入为7.03。

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

© www.soinside.com 2019 - 2024. All rights reserved.