double d0 = 2.00 + 0.98;
double d1 = 2.00 + 31.98;
double d2 = 33.98 - d1; System.out.println(d0);
System.out.println(d1);
System.out.println(d2);输出:
2.98
33.980000000000004
-7.105427357601002E-15请问如果我用double算钱数那么d2期望的应该是0,但实际不是,请问如何解决?
double d1 = 2.00 + 31.98;
double d2 = 33.98 - d1; System.out.println(d0);
System.out.println(d1);
System.out.println(d2);输出:
2.98
33.980000000000004
-7.105427357601002E-15请问如果我用double算钱数那么d2期望的应该是0,但实际不是,请问如何解决?
double d2 = 33980 - d1;
double result = d2/1000;
解决方法有很多。用BigDecimal并不是解决方案.下面告诉你一种解决的思想.
因为金额的小数位数有限,那么你完全可以将数据保存在整型中,进行输出时就缩小倍数输出