2
public static void main(String[] args) {
        double firstDouble = 1.8d;
        double secondDouble = 1.65d;


        float firstFloat = 1.8f;
        float secondFloat = 1.65f;
        System.out.println("DOUBLE SUM : "+(firstDouble + secondDouble));
        System.out.println("FLOAT SUM :"+(firstFloat + secondFloat));

        System.out.println("DOUBLE SUM"+firstDouble + secondDouble);
        System.out.println("FLOAT SUM"+firstFloat + secondFloat);
    }

OUT PUT:

DOUBLE SUM : 3.45
FLOAT SUM :3.4499998

DOUBLE SUM :1.81.65
FLOAT SUM :1.81.65

私の質問

1) 出力の最初のセットで、なぜ異なる値を与えているのか3.453.4499998同じ値に対して 2) 出力の 2 番目のセットで、出力が最初の出力と異なる理由。

前もって感謝します...

4

4 に答える 4

1

System.out.println("DOUBLE SUM"+firstDouble + secondDouble);

ここで引数は として取りますString。プラス/加算演算子は文字列連結として機能します。ブラケットの方が優先度が高いため、最初に評価されます。

最初の質問はすでに回答されています。ここで見つけてください

于 2013-05-17T04:37:40.537 に答える
0

1) float は (3.45-3.4499998)=2E-7 よりも優れた精度で合計を計算するには十分に正確ではないため http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html #jls-4.2.3

2) "DOUBLE SUM"+firstDoublefirstDouble を String に変換して連結し、次に secondDouble を連結します。( ) を入れると、最初に合計が計算され、結果が連結されて「DOUBLE SUM」になります。

于 2013-05-17T04:33:45.940 に答える