我当前正在将值输出到小数点后6位,并且无论整数值如何,都希望将第6位舍入。
到目前为止,我一直在使用CEILING()函数,该函数对于四舍五入的值1-9非常有效;但是,在我将小数点后第七位设为0(例如2705.1520270)的情况下,该函数不能四舍五入到2705.152028。
select CEILING(price*1000000)/1000000 as PriceRound
from tc_alcf a (nolock)
答案 0 :(得分:1)
加1并使用FLOOR()
:
select floor(price*1000000 + 1)/1000000 as PriceRound
from tc_alcf a
答案 1 :(得分:0)
这是一种方法:
0
我们可以将SELECT ROUND(2705.1520270 + 0.0000005, 6);
2705.1520280
添加到输入中,然后仅使用SQL Server的0.0000005
函数将其保留到小数点后6位。之所以可行,是因为小数点后第六位介于0和0.4999(重复)之间的值将变为5到0.9999(重复),这意味着它们会将 up 舍入到下一位。并且已经在小数点后六位具有5或更大的值将不会增加到下一位。
许多开发人员应该将此问题作为四舍五入的问题。
答案 2 :(得分:0)
或者您也可以通过乘以幂函数来移位小数
CEILING(2705.1520275 * POWER(10,6)) / POWER(10,6)