1. 程式人生 > >Java BigDecimal與科學計數法(轉String)的問題

Java BigDecimal與科學計數法(轉String)的問題

BigDecimal是處理高精度的浮點數運算的常用的一個類

當需要將BigDecimal中儲存的浮點數值打印出來,特別是在頁面上顯示的時候,就有可能遇到預想之外的科學技術法表示的問題。

一般直接使用 BigDecimal.toString()方法即可以完成浮點數的列印。

如:

    System.out.println( new BigDecimal("10000000000").toString());

但是,toString()方法輸出的字串並不能保證不是科學計數法。

不過在日常的使用中,用toString()方法輸出的就是普通的數字字串而非科學計數法。

直接這麼寫:

    System.out.println( new BigDecimal("100.000").toString());

程式的輸出即為:  100.000

如果我們希望去除末尾多餘的0,那麼我們應該這麼寫:

    System.out.println( new BigDecimal("100.000").stripTrailingZeros().toString());

其中,stripTrailingZeros()函式就是用於去除末尾多餘的0的,但是此時程式的輸出為: 1E+2

是科學計數法,可能並不是我們想要的。

解決的方法很簡單,如果想要避免輸出科學計數法的字串,我們要用toPlainString()函式代替toString()。如:

    System.out.println( new BigDecimal("100.000").stripTrailingZeros().toPlainString());

此時程式的輸出就為 100