Oracle中添加银行家四舍五入

1、银行家四舍五入是用于银行计算无法获取最小单位的值时采取的方法:其实很好理解;武功秘籍如下:

四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一

2、实操:

将下面的语句放到数据库中执行

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 ;

使用的时候直接调用round2(P1,P2)方法就行了,其中P1为原始值,P2为保留的小数点后几位

原文地址:https://www.cnblogs.com/404code/p/11506635.html