Oracle中新增銀行家四捨五入

2022-05-05 07:36:09 字數 602 閱讀 6977

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) ;

endif ;

end ;

使用的時候直接呼叫round2(p1,p2)方法就行了,其中p1為原始值,p2為保留的小數點後幾位

四捨五入 銀行家演算法

對於 四捨五入 的概念,相信大家都熟悉,因為小學三四年級就已經接觸過了,常規演算法這兒從略。但對於銀行家演算法,也許有不少人比較生疏。近期學習中遇到了,也了解一下演算法可以概括為 四捨六入五取偶 那就是 假設對小數部分進行捨入的話 待捨入的部分恰好為0.5000,則需要看前面一位數的奇偶性,奇數則入...

Round 四捨五入 js銀行家演算法

首先問一下round 0.825,2 返回的結果,大家猜一猜,首先sql server 返回的是 0.83 js的返回結果 是0.83,code 如下 var b 0.825 alert math.round b 100 100 其實js中可以 直接用tofixed函式的,var b 0.825 a...

Oracle 中的四捨五入

函式 round number,decimal places number 要處理的數值 decimal places 四捨五入後,小數點後保留幾位,可不寫,預設為0 舉例 小數點後保留0位時 sql select round 99.546 from dual round 99.546 100 小數...