1

私がこれまでに見つけたすべてのリファレンスによると、Java の long 型の範囲は -9,223,372,036,854,775,808 から +9,223,372,036,854,775,807 までです。以下に次のコードを書きました。

public static void main(String[] args){
    long x = 12 * 24 * 60 * 1000 * 1000; 
    long y = 12 * 60 * 1000 * 1000;
    System.out.print(x / y); 
}

予想される結果は 24 です。しかし、出力は 0 でした。

4

2 に答える 2

3

コードで 12 * 24 * 60 * 1000 * 1000は int として評価されます。そして、それを long に割り当てています。

試す

long x = 12L * 24 * 60 * 1000 * 1000; 
    long y = 12L * 60 * 1000 * 1000;
    System.out.print(x / y); 
}
于 2012-11-02T18:47:44.170 に答える
3

あなたのリテラルはintです...

そして、それは x = 17280000000 の代わりに 100130816 を与えます

どうぞ:

public static void main(String[] args) {
        long x = 12L * 24L * 60L * 1000L * 1000L;
        long y = 12L * 60L * 1000L * 1000L;
        System.out.print(x + " " + y + " " + x / y);

}

結果は24

PS私はこれを初めて解決しましたが、質問を削除しました...

于 2012-11-02T18:50:15.547 に答える