首页 > 解决方案 > SQL | 无论最后一个整数值如何,如何总是四舍五入,即使它可能是 0

问题描述

我目前正在将值输出到小数点后 6 位,并且无论整数值如何,都希望将第 6 位四舍五入。

到目前为止,我一直在使用 CEILING() 函数,该函数对于四舍五入的值 1-9 非常有效;但是,在我将第 7 位小数设为 0(例如:2705.1520270)的情况下,该函数不会四舍五入到 2705.152028。

select CEILING(price*1000000)/1000000 as PriceRound
from tc_alcf a (nolock)

标签: sqlsql-serverrounding

解决方案


这是一种方法:

SELECT ROUND(2705.1520270 + 0.0000005, 6);

2705.1520280

演示

在此处输入图像描述

我们可以添加0.0000005到输入,然后只需使用 SQL Server 的ROUND函数到小数点后 6 位。这是有效的,因为小数点后六位在 0 和 0.4999(重复)之间的值将变为 5 到 0.9999(重复),这意味着它们将四舍五入下一位。并且在小数点后六位已经有 5 或更大的值不会被提升到下一位。

许多开发人员应该熟悉这个问题,因为它是四舍五入的问题。


推荐阅读