簡體   English   中英

向上或向下舍入數字,基於 0.5 且最接近整數

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM