java中的四捨五入-銀行家舍入法
java基礎知識點總結:
從平時的閱讀和工作中記錄下容易忽略的瑣碎的知識點,都是些基礎的東西。
一、java中的四捨五入:
目前java支援7中舍入法:
1、 ROUND_UP:遠離零方向舍入。向絕對值最大的方向舍入,只要捨棄位非0即進位。
2、 ROUND_DOWN:趨向零方向舍入。向絕對值最小的方向輸入,所有的位都要捨棄,不存在進位情況。
3、 ROUND_CEILING:向正無窮方向舍入。向正最大方向靠攏。若是正數,舍入行為類似於ROUND_UP,若為負數,舍入行為類似於ROUND_DOWN。Math.round()方法就是使用的此模式。
4、 ROUND_FLOOR:向負無窮方向舍入。向負無窮方向靠攏。若是正數,舍入行為類似於ROUND_DOWN;若為負數,舍入行為類似於ROUND_UP。
5、 HALF_UP:最近數字舍入(5進)。這是我們最經典的四捨五入。
6、 HALF_DOWN:最近數字舍入(5舍)。在這裡5是要捨棄的。
7、 HAIL_EVEN:銀行家舍入法。
主要介紹下第7個HAIL_EVEN:
四捨五入其實在金融方面運用的非常多,尤其是銀行的利息。我們都知道銀行的盈利渠道主要是利息差,它從儲戶手裡收集資金,然後放貸出去,期間產生的利息差就是銀行所獲得的利潤。如果我們採用平常四捨五入的規則話,這裡採用每10筆存款利息計算作為模型,如下:
四舍:0.000、0.001、0.002、0.003、0.004。這些舍的都是銀行賺的錢。
五入:0.005、0.006、0.007、0.008、0.009。這些入的都是銀行虧的錢,分別為:0.005、0.004、.003、0.002、0.001。
所以對於銀行來說它的盈利應該是0.000 + 0.001 + 0.002 + 0.003 + 0.004 - 0.005 - 0.004 - 0.003 - 0.002 - 0.001 = -0.005。從結果中可以看出每10筆的利息銀行可能就會損失0.005元,千萬別小看這個數字,這對於銀行來說就是一筆非常大的損失。面對這個問題就產生了如下的銀行家涉入法了。該演算法是由美國銀行家提出了,主要用於修正採用上面四捨五入規則而產生的誤差。如下:
捨去位的數值小於5時,直接捨去。
捨去位的數值大於5時,進位後捨去。
當捨去位的數值等於5時,若5後面還有其他非0數值,則進位後捨去,若5後面是0時,則根據5前一位數的奇偶性來判斷,奇數進位,偶數捨去。
舉例說明:
11.556 = 11.56 ------六入
11.554 = 11.55 -----四舍
11.5551 = 11.56 -----五後有數進位
11.545 = 11.54 -----五後無數,若前位為偶數應捨去
11.555 = 11.56 -----五後無數,若前位為奇數應進位
BigDecimal d = new BigDecimal(100000); //存款
BigDecimal r = new BigDecimal(0.001875*3); //利率
BigDecimal i = d.multiply(r).setScale(2,RoundingMode.HALF_EVEN); //使用銀行家演算法
System.out.println(i);
輸出結果為: 562.50。
相關文章
- C++ 四捨五入與不四捨五入C++
- Java中數字的四捨五入和取整Java
- oracle中round()四捨五入Oracle
- JavaScript四捨五入的改進JavaScript
- Day42--四捨五入
- JavaScript數字四捨五入JavaScript
- “銀行家演算法”大揭祕!在前端表格中利用自定義公式實現“四捨六入五成雙”演算法前端公式
- JavaScript 賭運氣的四捨五入JavaScript
- JavaScript toFixed() 四捨五入規則JavaScript
- 那些關於JS四捨五入的事JS
- DELPHI四捨五入問題解決
- iOS小數四捨五入總結iOS
- IC學習筆記(一)——Verilog加減法及四捨五入筆記
- mssql sqlserver 取消數值四捨五入的方法分享SQLServer
- C語言中四捨五入問題總結C語言
- BigDecimal使用ROUND_HALF_UP進行四捨五入Decimal
- PHP 保留小數點後有效數字(四捨五入)PHP
- 1026 程式執行時間(四捨五入,round函式)函式
- Python模組---向上向下取整、四捨五入取整Python
- Java浮點數運算實現四捨五入和格式化方法總結Java
- 使用Oracle CEIL函式進行萬位四捨五入HGOracle函式
- 【Go】四捨五入在go語言中為何如此困難Go
- JS四則運算與四捨五入精度問題及解決方案JS
- 銀行家演算法演算法
- 【轉載】Verilog對資料進行四捨五入(round)與飽和(saturation)截位
- PHP取整,四捨五入取整、向上取整、向下取整、小數擷取PHP
- java-2個自定義註解+1個工具類對小數型別欄位進行四捨五入處理Java型別
- 中國銀行業協會&普華永道:2019中國銀行家調查報告行業
- python 使用 round 方法保留 1 位和 2 位小數時沒有進行四捨五入Python
- 為什麼你需要少看垃圾部落格以及如何在Python裡精確地四捨五入Python
- 用java語言,模擬實現作業系統的銀行家演算法。Java作業系統演算法
- [作業系統]銀行家演算法作業系統演算法
- 【作業系統】銀行家演算法作業系統演算法
- 央行:2019年第四季度銀行家問卷調查報告
- 中國人民銀行:2021年第三季度銀行家問卷調查
- 普華永道:2020年中國銀行家調查報告
- 五筆輸入法入門
- 五線譜入門(四)