黑马程序员技术交流社区
标题:
0.01+0.09为什么不等于0.1呢?
[打印本页]
作者:
Accoss-x
时间:
2015-12-29 02:36
标题:
0.01+0.09为什么不等于0.1呢?
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))));
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2