Java精確計算小數


Java在計算浮點數的時候,由於二進制無法精確表示0.1的值(就好比十進制無法精確表示1/3一樣),所以一般會對小數格式化處理.

但是如果涉及到金錢的項目,一點點誤差都不能有,必須使用精確運算的時候,就可以使用BigDecimal方法計算.

但是在使用中還需要注意一個問題:

復制代碼
//直接使用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));
復制代碼

這三個輸出結果是不一樣的:

所以在計算的時候,應該先把數字轉換成String類型的,才能得到最精確的值.

 

附常用的方法:

add  加

subtract  減

multiply  乘

divide 除

abs 絕對值

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

pow  幾次方

 

中文API鏈接:

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


免責聲明!

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



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