1. 程式人生 > >Android :關於小數相加出現很多位的 BigDecimal 也會有時不靠譜原因

Android :關於小數相加出現很多位的 BigDecimal 也會有時不靠譜原因

    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(字串)