SQL |如何始终舍入而不考虑最后一个整数值,即使该整数值可能为0

时间:2019-02-14 15:41:24

标签: sql sql-server rounding

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

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

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

3 个答案:

答案 0 :(得分:1)

加1并使用FLOOR()

select floor(price*1000000 + 1)/1000000 as PriceRound
from tc_alcf a 

答案 1 :(得分:0)

这是一种方法:

0

Demo

enter image description here

我们可以将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)