アプリケーションで 2 つの数値を乗算しようとしていますが、場合によっては間違った値になります
var result = 0;
var firstNumber = 654165;
var secondNumber = 6541;
result = firstNumber * secondNumber;
-16074031
それはどちらが間違っているという結果になる
エラーの場所を見つけるのを手伝ってもらえますか?
アプリケーションで 2 つの数値を乗算しようとしていますが、場合によっては間違った値になります
var result = 0;
var firstNumber = 654165;
var secondNumber = 6541;
result = firstNumber * secondNumber;
-16074031
それはどちらが間違っているという結果になる
エラーの場所を見つけるのを手伝ってもらえますか?
これを試して:
checked
{
var result = 0;
var firstNumber = 654165;
var secondNumber = 6541;
result = firstNumber * secondNumber;
}
このようにして問題を確認できますSystem.OverflowException
。単純に使用して解決するにはlong
unchecked
{
var result = 0L;
var firstNumber = 654165L;
var secondNumber = 6541L;
result = firstNumber * secondNumber;
}
オーバーフローが発生しています。
long
3 つの宣言の代わりに使用var
すると、正しい結果が得られます。
long result = 0;
long firstNumber = 654165;
long secondNumber = 6541;
result = firstNumber * secondNumber;
var
コンパイラを使用して、型Int32
を変数に割り当てます。
結果はInt32.MaxValue (これは )4,278,893,265
より大きいです。2,147,483,647
オーバーフローがあります。32 ビットより大きい型を使用する必要があります。(小数の場合は long など)
すべての宣言に var を使用しているにもかかわらず long を使用すると、正しい出力が得られます