我有下一个查询。
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的舍入中?
您可以使用ceiling()
功能:
ceiling(@i / 0.05) * 0.05
这似乎比您想做的要简单得多。