System.out.println(2.1-1.2);
System.out.println(2.1-0.1);
System.out.println(2.1f-1.2f);
System.out.println((new BigDecimal("4.0")).subtract(new BigDecimal("3.1")).doubleValue());
result:
0.9000000000000001
2.0
0.89999986
0.9
总结:当差额大于1时,计算的结果就是你希望得到的,当差额小于1时,由于浮点结算的原因(double、float精确度不一样的)建议采用BigDecimal来计算。
System.out.println(2.1-0.1);
System.out.println(2.1f-1.2f);
System.out.println((new BigDecimal("4.0")).subtract(new BigDecimal("3.1")).doubleValue());
result:
0.9000000000000001
2.0
0.89999986
0.9
总结:当差额大于1时,计算的结果就是你希望得到的,当差额小于1时,由于浮点结算的原因(double、float精确度不一样的)建议采用BigDecimal来计算。