如何使java中double類型不以科學計數法表示


在java中,把一個double或者BigDecimal的小數轉換為字符串時,經常會用科學計數法表示,而我們一般不想使用科學計數法,可以通過:
DecimalFormat a = new DecimalFormat("#,##0.00000000");
        System.out.println(a.format(11111111.0000001000000001));
的方式來格式化輸出字符串。

對於BigDecimal的小數,如果制定精度<=6, 則可以放心的使用其toString函數。但是對於>6的精度,有可能會使用科學計數法,查看器代碼有如下判斷:
long adjusted = -(long)scale + (coeff.length-1);
        if ((scale >= 0) && (adjusted >= -6)){
                  非科學計數法的toString.
        }
其中scale指BigDecimal的精度,
coeff對應使用BigInteger存儲的值的toString字符串, coeff = intVal.abs().toString().toCharArray(),也就是說BigDecimal在對應精度下的整數值,例如BigDecimal ob = new BigDecimal(0.00000011), ob的精度為7, 則coeff="1";如果ob=new BigDecimal(0.10000011), 則coeff="1000001";如果ob=new BigDecimal(0.00000001), 則coeff="0";

 

 

多使用bigdecimal  少使用double


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM