Android :关于小数相加出现很多位的 BigDecimal 也会有时不靠谱原因

来源:互联网 发布:java中的多态 编辑:程序博客网 时间:2024/05/22 04:58

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


0 0