對於「四捨五入」的概念,相信大家都熟悉,因為小學三四年級就已經接觸過了,常規演算法這兒從略。
但對於銀行家演算法,也許有不少人比較生疏。近期學習中遇到了,也了解一下演算法可以概括為「四捨六入五取偶」。那就是:(假設對小數部分進行捨入的話),
待捨入的部分恰好為0.5000,則需要看前面一位數的奇偶性,奇數則入,偶數則舍。
舉幾個例子來描述一下,比如:
1.5000 -> 2
2.5000 -> 2
3.5000 -> 4
4.5000 -> 4
…… ……
那,為什麼要這麼做?
按常規的四捨五入演算法
…… ……
[0.5,1.5) = 1
[1.5,2.5) = 2
[2.5,3.5) = 3
[3.5,4.5) = 4
[4.5,5.5) = 5
[5.5,6.5) = 6
…… ……
左閉右開會讓恰好為n+0.5的數值全部入,而左開右閉則全部舍,所以,一般的四捨五入會
使數值有向一端的傾向性。資料太多,就會形成相對較大的偏差,所以,就有人提出銀行家演算法。
銀行家演算法
…… ……
(0.5,1.5) = 1
[1.5,2.5] = 2
(2.5,3.5) = 3
[3.5,4.5] = 4
(4.5,5.5) = 5
[5.5,6.5] = 6
…… ……
這樣,隔乙個n+0.5數值入,隔乙個舍,從而使數值趨於均衡.
整體來看,資料不至於出現大的偏差
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中新增銀行家四捨五入
1 銀行家四捨五入是用於銀行計算無法獲取最小單位的值時採取的方法 其實很好理解 武功秘籍如下 四捨六入五考慮,五後非零就進一,五後為零看奇偶,五前為偶應捨去,五前為奇要進一 2 實操 將下面的語句放到資料庫中執行 create or replace function round2 p1 in num...
銀行家演算法
我們可以把作業系統看作是銀行家,作業系統管理的資源相當於銀行家管理的資金,程序向作業系統請求分配資源相當於使用者向銀行家貸款。為保證資金的安全,銀行家規定 1 當乙個顧客對資金的最大需求量不超過銀行家現有的資金時就可接納該顧客 2 顧客可以分期貸款,但貸款的總數不能超過最大需求量 3 當銀行家現有的...