1

2 つの数値の平均を取得するプログラムを作成しています。テスト ケースの場合、2, 4出力は ではあり3ません3.0。テスト ケースの場合、-1282660896, -672813783 出力は ではあり-977737339.5ません-9.777373395E8

私のコードは次のようなものです:

public static void getAve(long a, long b){
     System.out.println((double)(a + b) / 2);
}

次のように、必要に応じてフォーマット関数も作成しました。

public static String fmt(double d) {
        if (d == (long) d)
            return String.format("%d", (long) d);
        else
            return String.format("%s", d);
    }

しかし、これはテストケース2でも失敗します

4

2 に答える 2

0

あなたString.format("%d", (int)d)の場合は、dに小数部分がない場合にのみ実行できます。

実際、それに対する答えはすでにあります:

不必要な10進数0なしで、浮動小数点数を文字列に適切にフォーマットする方法は?

于 2013-10-27T19:54:19.300 に答える