舍入至5美分

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

我有下一个查询。

ALTER FUNCTION [dbo].[Test] (@i DECIMAL(10, 2))
RETURNS DECIMAL(10, 2)
AS
BEGIN
    DECLARE @j DECIMAL(10, 2)

    SET @j = @i - floor(@i)

    RETURN CASE 
            WHEN @j < 0.25
                THEN floor(@i)
            WHEN @j < 0.75
                THEN floor(@i) + 0.5
            ELSE ceiling(@i)
            END
END

return case when @j<0.25 then floor(@i) when @j<0.75 then floor(@i)+0.5 else ceiling(@i) end

END

这是针对0.5的舍入,但是如何将其更改为始终舍入为0.05,除非它已经在0.05的舍入中?

sql sql-server rounding floor ceil
1个回答
0
投票

您可以使用ceiling()功能:

ceiling(@i / 0.05) * 0.05

这似乎比您想做的要简单得多。

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