BigDecimal使用ROUND_HALF_UP進行四捨五入
BigDecimal bdTest = new BigDecimal(1.745);
BigDecimal bdTest1 = new BigDecimal(0.745);
bdTest = bdTest.setScale(2, BigDecimal.ROUND_HALF_UP);
bdTest1 = bdTest1.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("bdTest:" + bdTest); // 1.75
System.out.println("bdTest1:" + bdTest1); // 0.74
執行以上程式碼可以看到,1.745四捨五入的結果是1.75,0.745四捨五入的結果是0.74。
原因:
使用引數為float或double的BigDecimal建立物件會丟失精度。因此強烈建議不要使用引數為float或double的BigDecimal建立物件。
System.out.println(new BigDecimal(1.745)); // 1.74500000000000010658141036401502788066864013671875
System.out.println(new BigDecimal(0.745)); // 0.74499999999999999555910790149937383830547332763671875
解決辦法:
- 使用BigDecimal(String val)的構造方法建立物件
new BigDecimal("1.745");
new BigDecimal("0.745");
- 使用使用BigDecimal的valueOf(double val)方法建立物件
BigDecimal.valueOf(1.745);
BigDecimal.valueOf(0.745);
相關文章
- 使用Oracle CEIL函式進行萬位四捨五入HGOracle函式
- C++ 四捨五入與不四捨五入C++
- JavaScript四捨五入的改進JavaScript
- Day42--四捨五入
- oracle中round()四捨五入Oracle
- JavaScript數字四捨五入JavaScript
- JavaScript toFixed() 四捨五入規則JavaScript
- python 使用 round 方法保留 1 位和 2 位小數時沒有進行四捨五入Python
- 1026 程式執行時間(四捨五入,round函式)函式
- DELPHI四捨五入問題解決
- iOS小數四捨五入總結iOS
- JavaScript 賭運氣的四捨五入JavaScript
- 【轉載】Verilog對資料進行四捨五入(round)與飽和(saturation)截位
- 那些關於JS四捨五入的事JS
- C語言中四捨五入問題總結C語言
- java中的四捨五入-銀行家舍入法Java
- Java中數字的四捨五入和取整Java
- mssql sqlserver 取消數值四捨五入的方法分享SQLServer
- PHP 保留小數點後有效數字(四捨五入)PHP
- Python模組---向上向下取整、四捨五入取整Python
- 【Go】四捨五入在go語言中為何如此困難Go
- JS四則運算與四捨五入精度問題及解決方案JS
- IC學習筆記(一)——Verilog加減法及四捨五入筆記
- java-2個自定義註解+1個工具類對小數型別欄位進行四捨五入處理Java型別
- PHP取整,四捨五入取整、向上取整、向下取整、小數擷取PHP
- Java浮點數運算實現四捨五入和格式化方法總結Java
- 為什麼你需要少看垃圾部落格以及如何在Python裡精確地四捨五入Python
- Vue中使用js實現保留小數的奇入偶不入,四捨六入的計算VueJS
- 阿里巴巴為什麼建議使用BigDecimal進行浮點數運算阿里Decimal
- 五線譜入門(四)
- 張高興的 .NET Core IoT 入門指南:(四)使用 SPI 進行通訊
- 使用代理進行抓取的四個優勢
- BigDecimal使用注意的地方Decimal
- Java BigDecimal使用指南JavaDecimal
- Spring Boot 入門(五):整合 AOP 進行日誌管理Spring Boot
- 使用 preloadComponents 進行元件預載入元件
- React Native 探索(五)使用 fetch 進行網路請求React Native
- React Native探索(五)使用fetch進行網路請求React Native