您的位置首页  散文小品

尾的拼音(尾数的拼音)这都可以

应业务场景需求,需对结果值进一步处理,在此提供3种处理方式(Oracle),详见附1。01:四舍五入。ROUND就可以解决。round(数值,保

尾的拼音(尾数的拼音)这都可以

 

应业务场景需求,需对结果值进一步处理,在此提供3种处理方式(Oracle),详见附101:四舍五入ROUND就可以解决round(数值,保留位数);02:舍尾,也就是截位REUNC函数trunc(数值,保留位数);。

03:进位CEIL函数FLOOR函数这个稍微有点不一样,需要区分正数进位,或者负数进位正数进位:CEIL(V_PRICE*POWER(10,V_LENGTH))/POWER(10,V_LENGTH); 。

负数进位:FLOOR(V_PRICE*POWER(10,V_LENGTH))/POWER(10,V_LENGTH); 还有一个小思路,感兴趣的可以玩玩负数进位:CEIL(ABS(数值)*POWER(10,保留位数))/POWER(10,保留位数)*数值/-数值。

--附1CREATE OR REPLACE FUNCTION FUN_ROUNDING(I_PRICE IN NUMBER, --数值 I_ROUNDING IN VARCHAR2,--尾数处理方式, I_LENGTH IN NUMBER) --保留位数

RETURN NUMBER IS/****************************************************************************** NAME: FUN_ROUNDING

PURPOSE: 尾数处理( 01 四舍五入 02 舍尾 03 进位 ) 参数说明:******************************************************************************/

V_ROUNDING VARCHAR2(2) ; V_PRICE NUMBER(22,8); V_LENGTH NUMBER(22,8); V_SQL NUMBER(22,8); O_ROUNDING NUMBER(22,8);

BEGIN V_PRICE := I_PRICE; V_ROUNDING := I_ROUNDING; V_LENGTH := I_LENGTH; --(四舍五入 截位 进位) IF V_ROUNDING = 02

THEN V_SQL := TRUNC(V_PRICE,V_LENGTH);--截位 ELSIF v_rounding = 03 THEN IF V_PRICE > 0 THEN V_SQL := CEIL(V_PRICE*POWER(10,V_LENGTH))/POWER(10,V_LENGTH); --正数进位

ELSIF V_PRICE < 0 THEN V_SQL := FLOOR(V_PRICE*POWER(10,V_LENGTH))/POWER(10,V_LENGTH); --负数进位 --THEN V_SQL := CEIL(ABS(V_PRICE)*POWER(10,V_LENGTH))/POWER(10,V_LENGTH)*V_PRICE/-V_PRICE; --负数进位

END IF; ELSE V_SQL := ROUND(V_PRICE,V_LENGTH); --四舍五入 END IF; -- 返回值 SELECT V_SQL INTO O_ROUNDING FROM DUAL;

RETURN O_ROUNDING;END;

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186