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++
- oracle中round()四捨五入Oracle
- Java中數字的四捨五入和取整Java
- php中四捨五入的數學函式PHP函式
- JavaScript四捨五入的改進JavaScript
- JavaScript四捨五入的那些坑JavaScript
- “銀行家演算法”大揭祕!在前端表格中利用自定義公式實現“四捨六入五成雙”演算法前端公式
- JavaScript數字四捨五入JavaScript
- JavaScript 賭運氣的四捨五入JavaScript
- JavaScript toFixed() 四捨五入規則JavaScript
- 那些關於JS四捨五入的事JS
- iOS小數四捨五入總結iOS
- js四捨五入程式碼例項JS
- 一個四捨五入函式 (轉)函式
- js實現的數字四捨五入效果JS
- MySQL 之 ROUND 函式四捨五入的陷阱MySql函式
- PHP實現四捨五入的3種方法PHP
- sql 保留兩位小數+四捨五入SQL
- mssql sqlserver 取消數值四捨五入的方法分享SQLServer
- javascript數字四捨五入程式碼例項JavaScript
- IC學習筆記(一)——Verilog加減法及四捨五入筆記
- 實現四捨五入效果的javascript程式碼例項JavaScript
- Python模組---向上向下取整、四捨五入取整Python
- PHP 保留小數點後有效數字(四捨五入)PHP
- javascript實現浮點數四捨五入效果程式碼JavaScript
- js實現的數字四捨五入效果程式碼例項JS
- 銀行家演算法演算法
- Java浮點數運算實現四捨五入和格式化方法總結Java
- 使用Oracle CEIL函式進行萬位四捨五入HGOracle函式
- 【Go】四捨五入在go語言中為何如此困難Go
- JS四則運算與四捨五入精度問題及解決方案JS
- js對數字進行四捨五入運算包括負數JS
- JavaScript保留指定位數小數但是不進行四捨五入JavaScript
- 1026 程式執行時間(四捨五入,round函式)函式
- JS取整,四捨五入,取絕對值等Math物件常用方法JS物件
- Sql Server 裡的向上取整、向下取整、四捨五入取整的例項!SQLServer
- javascript實現的將小數轉換為整數不進行四捨五入JavaScript