早知道在java中,浮点运算会出现不精确的情况。解决方案是BigDecimal类。
今天发现个问题:
System.out.println(2-1.1);//0.8999999999999999
System.out.println(2.0-0.9);//1.1
只要没有整数位的都会出现问题?
Why?
ringa_lee2017-04-17 17:40:20
その理由は、浮動小数点数が指数と仮数の 2 つの部分で構成されているためです。浮動小数点数が 2 進数に変換されて計算に参加すると、変換プロセスは予測不能かつ不可逆的になります。
あなたが言及した 2 番目のケース。たまたま、変換プロセス中に精度の損失が見つからなかっただけです