銀行家捨入

2021-08-15 12:06:04 字數 785 閱讀 9814

捨去位的數值小於5時,直接捨去;

捨去位的數值大於等於6時,進製後捨去;

當捨去位的數值等於5時,分兩種情況:5後面還有其他數字(非0),則進製後捨去;若5後面是0(即5是最後一位),則根據5前一位數的奇偶性來判斷是否需要進製,奇數進製,偶數捨去。

按上述規則舉例,假設我們要求數字要求精確到個位:

49.6101-> 50

49.499 -> 49

49.50921 -> 50

48.50921 -> 48

48.5101 -> 49

有個很好的例子來看出這種計算方式的優勢:

2.55 + 3.45 = 6

如果我們要保留一位小數,去轉換 2.55 和3.45,則會變成這樣:

2.6 + 3.5 = 6.1

很顯然這樣多了 0.1,那麼按照我們的「四捨六入五成雙」 再來計算,2.55 實際上可以說是 2.5

50,我們要捨去的 5 的後面是0,則根據前面一位的奇偶判斷是否進製,很顯然前面為奇數,則進製後為 2.6,對於 3.4

5,5 前面是偶數,則捨去,結果為3.4,因此兩者計算如下:

2.6 + 3.4 = 6

但是,2.55 + 2.55 實際依舊多算了 0.1,因為用 

四捨五入

,也會存在這個情況。重點是 2.45 + 2.45,常規的四捨五入會被捨去,我們需要避免這種接近中間值卻未進製的情況,因為只有這樣,才能保證近似計算中捨去和進製的概率相等。這才是主要目的。畢竟只要精度有限必定存在損耗,我們只需要保證在大量樣本下,概率相等即可。

銀行家捨入法

捨去位的數值小於5時,直接捨去。捨去位的數值大於5時,進製後捨去。當捨去位的數值等於5時,若5後面還有其他非0數值,則進製後捨去,若5後面是0時,則根據5前一位數的奇偶性來判斷,奇數進製,偶數捨去。對於上面的規則我們舉例說明 11.556 11.56 六入 11.554 11.55 四捨 11.55...

銀行家演算法

我們可以把作業系統看作是銀行家,作業系統管理的資源相當於銀行家管理的資金,程序向作業系統請求分配資源相當於使用者向銀行家貸款。為保證資金的安全,銀行家規定 1 當乙個顧客對資金的最大需求量不超過銀行家現有的資金時就可接納該顧客 2 顧客可以分期貸款,但貸款的總數不能超過最大需求量 3 當銀行家現有的...

銀行家演算法

銀行家演算法 banker s algorithm 是乙個避免死鎖 deadlock 的著名演算法,是由艾茲格 迪傑斯特拉在1965年為t.h.e系統設計的一種避免死鎖產生的演算法。它以銀行借貸系統的分配策略為基礎,判斷並保證系統的安全執行。就像我們從銀行貸快一樣,首先銀行會考慮到我們有沒有償還能力...