2017-06-22 28 views
2

我其中我想在下面的方式圓向上號碼特有要求 -修改輪迴函數UP Oracle中

1.14 to 1.5 
    1.6 to 2 
    0.8 to 1 
    7.5 to 7.5 

即,爲0.5最接近的倍數。

有沒有辦法做到這一點?

問候

+0

好的 - 所以你不需要將ROUND精確到0.5,而是將ROUND ** UP **精確到0.5。這就是MT0所展示的。 – mathguy

+0

這不是「四捨五入」 - 你想要一個天花板。 –

回答

6

如果你想四捨五入到最接近的0.5:

測試數據

CREATE TABLE your_table (value) AS 
    SELECT 1.14 FROM DUAL UNION ALL 
    SELECT 1.6 FROM DUAL UNION ALL 
    SELECT 0.8 FROM DUAL UNION ALL 
    SELECT 7.5 FROM DUAL; 

查詢

SELECT value, 
     CEIL(value * 2)/2 AS rounded_value 
FROM your_table 

輸出

VALUE ROUNDED_VALUE 
----- ------------- 
1.14   1.5 
    1.6    2 
    0.8    1 
    7.5   7.5 

如果你想從零本輪客場精確到0.5(不是負數同樣的事情),你可以使用:

SIGN(value) * CEIL(ABS(value)*2)/2 
+0

完美!......非常感謝您的即時解決方案:) –

0

這裏有一種方法:

select floor(val * 2 + 1)/2 
+3

它失敗了7.5至7.5 –

+0

@AnirudhD。 。 。如果您閱讀編輯歷史記錄,當我回答時,您會發現這不是問題。 downvote是完全沒有理由和粗魯。 –

+2

7.5不在原始範圍內。但似乎很明顯(至少對我來說)它不應該被四捨五入爲8 –