Java精確計算小數

Java在計算浮點數的時候,因爲二進制沒法精確表示0.1的值(就比如十進制沒法精確表示1/3同樣),因此通常會對小數格式化處理.html

可是若是涉及到金錢的項目,一點點偏差都不能有,必須使用精確運算的時候,就能夠使用BigDecimal方法計算.java

可是在使用中還須要注意一個問題:api

複製代碼
//直接使用double類型數據進行運算 System.out.println(0.05+0.01); //使用BigDecimal的double參數的構造器 BigDecimal bd1 = new BigDecimal(0.05); BigDecimal bd2 = new BigDecimal(0.01); System.out.println(bd1.add(bd2)); //使用BigDecimal的String參數的構造器 BigDecimal bd3 = new BigDecimal("0.05"); BigDecimal bd4 = new BigDecimal("0.01"); System.out.println(bd3.add(bd4));
複製代碼

這三個輸出結果是不同的:ide

因此在計算的時候,應該先把數字轉換成String類型的,才能獲得最精確的值.post

 

附經常使用的方法:spa

add  加code

subtract  減htm

multiply  乘blog

divide 除ip

abs 絕對值

getScale  根據一個規則取幾位小數

pow  幾回方

 

中文API連接:

http://www.apihome.cn/api/java/BigDecimal.html

相關文章
相關標籤/搜索