首页 > 解决方案 > 向上舍入 5 美分

问题描述

我有下一个查询。

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 的回合?

标签: sqlsql-serverroundingfloorceil

解决方案


您可以使用以下ceiling()功能:

ceiling(@i / 0.05) * 0.05

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


推荐阅读