尾的拼音(尾数的拼音)这都可以
应业务场景需求,需对结果值进一步处理,在此提供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;
- 标签:
- 编辑:李松一
- 相关文章
-
飞递(飞递供应链)真没想到
2022年1-10月,选择“南航快运”产品运输的货物超过29万票,运输货量超过4万吨。
-
飞递(飞递供应链)一篇读懂
020年的疫情对全球贸易带来非常大的影响,相比于传统外贸企业,跨境电商业态由于发挥无接触、交易链条短、海外仓等优势,在疫情期间得…
- 年把(年把是哪里的方言)深度揭秘
- 年把(年把是哪里的方言)怎么可以错过
- 帝豪ev8报价(帝豪商务车7座ev8价格)这都可以?
- 北京自住房摇号(北京住房摇号申请官网)一篇读懂
- 黄梁美梦的意思(黄梁美梦中梁的意思)怎么可以错过