BigDecimal中divide方法注意問題

2021-08-20 09:25:51 字數 432 閱讀 1579

在使用

bigdecimal rate = new bigdecimal(1).divide(new bigdecimal(3));
時拋異常:

non-terminating

decimal expansion; no exact representable decimal result

原來是在做除法的時候出現了無限不迴圈小數如:0.333333333333

解決方案

在做做除法的時候指定保留的小數的位數:

bigdecimal rate = new bigdecimal(1).divide(new bigdecimal(3), 6, bigdecimal.round_half_up);

BigDecimal中八種捨入方式

1 round up 始終對非捨棄部分前面的數字加1。0.1203456789,當精度為3的時候,按照round up模式,結果是0.121 0.1203456789,當精度為3的時候,按照round up模式,結果是 0.121 注意 0.1891,當精度為3的時候,按照round up模式,結果...

JAVA中BigDecimal的字元化輸出

bigdecimal是處理高精度的浮點數運算的常用的乙個類 當需要將bigdecimal中儲存的浮點數值列印出來,特別是在頁面上顯示的時候,就有可能遇到預想之外的科學技術法表示的問題。一般直接使用 bigdecimal.tostring 方法即可以完成浮點數的列印。如 system.out.prin...

JAVA中BigDecimal的字元化輸出

bigdecimal是處理高精度的浮點數運算的常用的乙個類 當需要將bigdecimal中儲存的浮點數值列印出來,特別是在頁面上顯示的時候,就有可能遇到預想之外的科學技術法表示的問題。一般直接使用 bigdecimal.tostring 方法即可以完成浮點數的列印。如 system.out.prin...