84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
早知道在java中,浮点运算会出现不精确的情况。解决方案是BigDecimal类。今天发现个问题:
System.out.println(2-1.1);//0.8999999999999999
System.out.println(2.0-0.9);//1.1
只要没有整数位的都会出现问题?Why?
原因在于浮点数由两部分组成:指数和 尾数,浮点数转换成二进制后,并且参与了计算,那么转换的过程就会变得不可预知,并且变得不可逆你提到的第二个情况仅仅是碰巧在转换过程中没有发现精度丢失
这个问题不只java有,其他语言也有这种状况吧。
原因在于浮点数由两部分组成:指数和 尾数,浮点数转换成二进制后,并且参与了计算,那么转换的过程就会变得不可预知,并且变得不可逆
你提到的第二个情况仅仅是碰巧在转换过程中没有发现精度丢失
这个问题不只java有,其他语言也有这种状况吧。