[英]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.