我使用的数据库是SQL Server 2005.我试图将值DOWN舍入到最接近的.05(镍)。
到目前为止,我有:
SELECT ROUND(numberToBeRounded / 5, 2) * 5
答案 0 :(得分:6)
为要截断的第三个参数指定非零值而不是舍入:
SELECT ROUND(numberToBeRounded / 5, 2, 1) * 5
注意:截断向零舍入,而不是向下舍入,但如果您有负值,则只会产生差异。要向下舍入甚至为负值,您可以使用floor
函数,但是您不能指定小数位数,因此您需要乘以而不是除以:
SELECT FLOOR(numberToBeRounded * 20) / 20
答案 1 :(得分:0)
如果您的数据类型为numeric
(ISO decimal
)或“金钱”,则您可以非常轻松地向任意特定的"单位"舍入为零,因此:
declare @value money = 123.3499
declare @unit money = 0.05
select value = value ,
rounded_towards_zero = value - ( value % @unit )
from #foo
无论价值本身的符号如何,它都有效,尽管你要舍入的单位应该是正数。
123.3499 -> 123.3000
-123.3499 -> -123.3000