Android :關於小數相加出現很多位的 BigDecimal 也會有時不靠譜原因
阿新 • • 發佈:2019-02-16
BigDecimal
BigDecimal bigDecimal1= new BigDecimal(0.0); BigDecimal bigDecimal2= new BigDecimal(1.001); BigDecimal bigDecimal3= new BigDecimal("0.0"); BigDecimal bigDecimal4= new BigDecimal("1.001"); for (int i = 0; i <5; i++) { bigDecimal1 = bigDecimal1.add(bigDecimal2); System.out.println(bigDecimal1); } System.out.println("---------------------------"); for (int i = 0; i <5; i++) { bigDecimal3 = bigDecimal3.add(bigDecimal4); System.out.println(bigDecimal3); }
輸出結果:
1.000999999999999889865875957184471189975738525390625
2.001999999999999779731751914368942379951477050781250
3.002999999999999669597627871553413569927215576171875
4.003999999999999559463503828737884759902954101562500
5.004999999999999449329379785922355949878692626953125
---------------------------
1.001
2.002
3.003
4.004
5.005
可以明顯看出
bigDecimal1 不正常 <pre name="code" class="java">bigDecimal3 正常
就是當我們相加的時候 最好new BigDecimal(字串)