-1

重複の可能性:
浮動小数点演算が Java で正確な結果を生成しない Java の浮動小数点

以下のコードを参照してください。

public class TestSum {

public static void main(String[] args) {
    float a = 4.8f;//try with 4.7f
    float b = 4.5f;//try with 4.6f
    double sum = a + b;
    System.out.println(sum);
 }
}

(4.8f+4.5f) sum=9.300000190734863

しかし、試し(4.7f+4.6f)てみると、sum = 9.299999237060547 もう一度、

(1.8f+1.5f) sum=3.299999952316284.
(1.7f+1.6f) sum=3.3000001907348633.

しかし、

(2.8f+2.5f) sum=5.300000190734863.
(2.7f+2.6f) sum=5.300000190734863.

これがどのように機能するかを理解したいです。前もって感謝します。

4

3 に答える 3

3

あなたの問題はすべてのプログラミング言語に共通しており、それは浮動小数点数の有限の精度によるものです。

于 2013-01-23T09:50:43.633 に答える
1

これがどのように機能するかを理解したいと思います。

情報を参照してください。&浮動小数点タグWikiのリンク(以下にリスト)。

それでは、これに対する最善の解決策は何ですか...?

BigDecimal、またはより一般的には、を使用して出力をフォーマットしますDecimalFormat

于 2013-01-23T11:05:39.727 に答える
0

ここで私を助けてくれてありがとう。

しかし、なぜこれがPython、Ruby、またはJavaScriptでは発生せず、Javaで発生するのかを理解するために、この質問をしました。

精度の可能な解決策の1つは、doubleを使用することだと思います

   public class TestSum {
   public static void main(String[] args){
   double a = 4.8d;
   double b = 4.5d;
   double sum = a + b;
   System.out.println(sum);
   }
   }
于 2013-01-23T11:11:45.430 に答える