二重減算の精度の問題 質問する

二重減算の精度の問題 質問する

私の同僚は次のような実験をしました:

public class DoubleDemo {

      public static void main(String[] args) {
           double a = 1.435;
           double b = 1.43;
           double c = a - b;
           System.out.println(c);
      }
 }

この第 1 レベルの操作では、次の出力が期待されます。

0.005

しかし予想外に出力は次のようになりました。

0.0050000000000001155

なぜ double はこのような単純な操作で失敗するのでしょうか? また、double がこの作業のデータ型ではない場合、何を使用すればよいのでしょうか?

ベストアンサー1

double内部的には分数として保存されますバイナリ- のように1/4 + 1/8 + 1/16 + ...

0.005、または値1.435は、バイナリの正確な分数として保存できないため、double正確な値を保存することはできず0.005、減算された値は正確ではありません。

正確な 10 進演算が必要な場合は、 を使用しますBigDecimal

また、この記事役に立つ読み物。

おすすめ記事