关于Java浮点运算精确的问题
巴扎黑
巴扎黑 2017-04-17 17:38:20
0
2
338

早知道在java中,浮点运算会出现不精确的情况。解决方案是BigDecimal类。
今天发现个问题:

System.out.println(2-1.1);//0.8999999999999999
System.out.println(2.0-0.9);//1.1

只要没有整数位的都会出现问题?
Why?

巴扎黑
巴扎黑

全員に返信(2)
左手右手慢动作

その理由は、浮動小数点数が指数と仮数の 2 つの部分で構成されているためです。浮動小数点数が 2 進数に変換されて計算に参加すると、変換プロセスは予測不能かつ不可逆的になります。
あなたが言及した 2 番目のケース。たまたま、変換プロセス中に精度の損失が見つからなかっただけです

いいねを押す +0
Peter_Zhu

この問題は Java に限定されず、他の言語でもこの問題が発生する可能性があります。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート