本帖最后由 最初的理想 于 2012-2-8 20:34 编辑
java的运算符最后都是把操作数转换成二进制进行计算的。如果是浮点的话再转换成二进制并且进行运算的时候就会出现你上面这样的结果,有种说法叫做浮点截断,所以精确的浮点运算建议采用BigDecimal
public class Test{
public static void main(String args[]){
BigDecimal ab=new BigDecimal("0.05");
BigDecimal ad=new BigDecimal("0.01");
System.out.println(0.05+0.01);
System.out.println(ab.add(ad).doubleValue());
}
}
|