java中双数的总和

时间:2015-04-02 20:42:08

标签: java floating-point double

为什么当我们总和五次 0.1 时,不能用double精确表示,结果是 0.5 ?很清楚,手动添加双倍值 0.1000000000000000055511151231257827021181583404541015625 五次不会导致 0.5 。做相同的总和,三次不会导致 0.3 。是否会发生这种情况,因为 0.5 可以准确表示, 0.3 可以&#t; t?

    System.out.println(new BigDecimal(0.1));
    System.out.println(new BigDecimal(0.1 + 0.1 + 0.1 + 0.1 + 0.1));
    System.out.println(new BigDecimal(0.5));

    System.out.println(new BigDecimal(0.1 + 0.1 + 0.1));
    System.out.println(new BigDecimal(0.3));

输出:

   0.1000000000000000055511151231257827021181583404541015625
   0.5
   0.5
   0.3000000000000000444089209850062616169452667236328125
   0.299999999999999988897769753748434595763683319091796875

0 个答案:

没有答案