Java Double精准计算的坑
public static void main(String[] args) {
System.out.println(5053.6 * 100);
BigDecimal bigDecimal1 = new BigDecimal(5053.6);
BigDecimal bigDecimal2 = new BigDecimal(100);
double d1 = bigDecimal1.multiply(bigDecimal2).doubleValue();
System.out.println(d1);
BigDecimal bigDecimal3 = new BigDecimal(5053.6+"");
BigDecimal bigDecimal4 = new BigDecimal(100+"");
double d2 = bigDecimal3.multiply(bigDecimal4).doubleValue();
System.out.println(d2);
}
505360.00000000006
505360.000000000060
505360.0
第一个计算结果是错误的
第二个计算结果也是错误的
只有第三个计算结果是正确
这是一个做电商应用常见得坑,可以做为面试题