[英]Rounding number up or down, based on 0.5 and closest to round number
我在 SQL Server 中使用CEILING 和 FLOOR 时遇到问题。
问题是,我想根据十进制值 0.5 进行四舍五入
例如:
- 2.56 -> 3
- 1.2 -> 1
- 4.1 -> 4
- 0.7 -> 1
- 0.48 -> 0
如您所见,如果十进制值 < .5,我需要获得较低的舍入数,如果 >= .5,则需要得到更高的舍入数。
CEILING 和 FLOOR 只四舍五入到最低或最高十进制值,我没有得到想要的结果。
有什么建议?
我希望round()
能做你想做的事。 但如果你想明确,那么试试:
floor(x + 0.5)
阅读这个... https://sqlstudies.com/2016/10/05/floor-round-and-ceiling/
Round进行标准舍入。 如果值等于或大于 0.5,则返回 1。如果小于 0.5,则返回 0
Ceiling返回等于或大于传入值的整数。
SELECT ROUND(2.56,0);
Answer= 3.00
SELECT ROUND(2.56,1);
Answer= 2.60
SELECT CEILING(2.56);
Answer= 3
如果您需要将窗口从 0.5 更改为其他内容,则可以使用此逻辑(注意:@number 是您的输入)
DECLARE @Number AS DECIMAL
SET @Number = 0.49
SELECT @Number+ CASE WHEN @Number%1 BETWEEN 0.000 AND 0.249 THEN 0.000 - @Number%1
WHEN @Number%1 BETWEEN 0.250 AND 0.500 THEN 0.500 -@Number%1
WHEN @Number%1 BETWEEN 0.500 AND 0.749 THEN 0.500 -@Number%1
WHEN @Number%1 BETWEEN 0.750 AND 0.999 THEN 1.000 -@Number%1
END
您可以使用演员表
选择 cast(YourX+0.5 as int);
用这个:
SELECT CAST(ROUND(CAST(0.5 AS NUMERIC(5, 2)),0) AS int)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.