創建Oracle銀行家舍入算法函數過程

銀行家舍入算法規則描述:四捨六入五考慮,五後非零就進一,五後爲零看奇偶,五前爲偶應捨去,五前爲奇要進一

函數過程

CREATE OR REPLACE 
FUNCTION ROUND2 (P1 IN NUMBER, P2 IN NUMBER) RETURN NUMBER AS
BEGIN
IF TRUNC (P1, P2 + 1) <> P1
OR SUBSTR (P1 * POWER(10, P2 + 1) ,- 1) <> '5'
OR MOD (
SUBSTR (P1 * POWER(10, P2 + 1) ,- 2, 1),
2
) = 1 THEN
RETURN ROUND (P1, P2);
ELSE
RETURN TRUNC (P1, P2);
END
IF;
END;

 

 

測試:

select ROUND2(3.5, 0) from dual;結果爲:4

select ROUND2(4.5, 0) from dual; 結果爲:4

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章