创建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

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