前言 面试题 问:请你解释为什么会出现4.0-3.6=0.40000001这种现象? 答:这里十进制的计算会转化为二进制的计算,而二进制有的时候无法精确地表示十进制的小数,因为有些小数无法写成1/(2^n)的和的形式(比如0.1),如此就会出现误差,那么最后计算得出的结果自然也会有误差。 1. 如何解决 用BigDecimal,这里注意:构造方法里面的参数只有是字符串形式时才不会丢失精度。 比如: //BigDecimal简单练习 double value1=4.0; double value2=3.6; System.out