1

「算術演算でオーバーフローが発生しました」という例外が発生しましたが、その理由はわかりません。

私は次の計算をしようとしています

私の値 = 2 * 11 * 37 * 41 * 41 * 41 * 41

これは 2,300,169,454 に相当します。myvalue 変数を Long として宣言し、Int64 も試したので、これは範囲内にあるはずです。この例外がスローされる他の理由はありますか?

ありがとう

4

2 に答える 2

4

代入のターゲットをとして宣言しましたが、演算内で演算longを実行しているようです。intすべての演算が のように行われるとint、オーバーフローします。演算を 64 ビットで実行する必要がある場合は、オペランドをlong値、または少なくともその一部にする必要があります。(実際のコードを見ずに、どこを変更すればよいかを正確に判断するのは困難です。)

于 2012-11-28T22:58:03.570 に答える
1

そのエラーが発生しているため、使用しているすべての値はint値 (またはそれより小さい) です。

long計算で値を1 つだけ使用すると、結果はlong値になり、オーバーフローは発生しません。

long myvalue = 2 * 11 * 37 * 41 * 41L * 41 * 41;
于 2012-11-28T23:11:32.240 に答える