运行:
public class DoubleOperation {
public static void main(String args[]){
System.out.println(0.05+0.01);
System.out.println(1.0-0.42);
System.out.println(4.015*100);
System.out.println(123.3/100);
}
}
结果:
原因:
目前常用的float和double等浮点数是基于IEEE-754的二进制有限小数。一个有理数,除非分母是足够小的2的整数次幂,否则它就不能被精确表示。因此,有些十进制有限位数的小数,到二进制里面可能会变成无限循环小数,在浮点数中不能表示而损失精度。
解决办法:
引入java.math.BigDecimal类
并且调用构造方法是时,尽量用int或者String类型