public class Test{
public static void main(String[]args){
double a = 0.01, b = 0.09;
System.out.print(a+b);
}
}
其实因为当计算机内存里要表示小数时丢失了精度。
double还是float都会遇到这个问题
例如:
float的0.1二进制形式是001111011 10011001100110011001101,
根据符号位换算为10进制表达的值精确应该是这样计算 110011001100110011001101乘以2的负27次方,
实际值是0.100000001490116119384765625,这样就产生了实际误差。
解决办法:
System.out.println(new BigDecimal(Double.toString(0.05)).add(new BigDecimal(Double.toString(0.01))));
|
|