扫码关注官方订阅号
早知道在java中,浮点运算会出现不精确的情况。解决方案是BigDecimal类。今天发现个问题:
System.out.println(2-1.1);//0.8999999999999999
System.out.println(2.0-0.9);//1.1
只要没有整数位的都会出现问题?Why?
原因在于浮点数由两部分组成:指数和 尾数,浮点数转换成二进制后,并且参与了计算,那么转换的过程就会变得不可预知,并且变得不可逆你提到的第二个情况仅仅是碰巧在转换过程中没有发现精度丢失
这个问题不只java有,其他语言也有这种状况吧。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
原因在于浮点数由两部分组成:指数和 尾数,浮点数转换成二进制后,并且参与了计算,那么转换的过程就会变得不可预知,并且变得不可逆
你提到的第二个情况仅仅是碰巧在转换过程中没有发现精度丢失
这个问题不只java有,其他语言也有这种状况吧。