「算術演算でオーバーフローが発生しました」という例外が発生しましたが、その理由はわかりません。
私は次の計算をしようとしています
私の値 = 2 * 11 * 37 * 41 * 41 * 41 * 41
これは 2,300,169,454 に相当します。myvalue 変数を Long として宣言し、Int64 も試したので、これは範囲内にあるはずです。この例外がスローされる他の理由はありますか?
ありがとう
代入のターゲットをとして宣言しましたが、演算内で演算long
を実行しているようです。int
すべての演算が のように行われるとint
、オーバーフローします。演算を 64 ビットで実行する必要がある場合は、オペランドをlong
値、または少なくともその一部にする必要があります。(実際のコードを見ずに、どこを変更すればよいかを正確に判断するのは困難です。)
そのエラーが発生しているため、使用しているすべての値はint
値 (またはそれより小さい) です。
long
計算で値を1 つだけ使用すると、結果はlong
値になり、オーバーフローは発生しません。
long myvalue = 2 * 11 * 37 * 41 * 41L * 41 * 41;