検索

ホームページ  >  に質問  >  本文

关于Java浮点运算精确的问题

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

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

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

巴扎黑巴扎黑2888日前344

全員に返信(2)返信します

  • ringa_lee

    ringa_lee2017-04-17 17:40:20

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

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:40:20

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

    返事
    0
  • キャンセル返事