2

アプリケーションで 2 つの数値を乗算しようとしていますが、場合によっては間違った値になります

var result = 0;
var firstNumber = 654165;
var secondNumber = 6541;
result = firstNumber * secondNumber;

-16074031それはどちらが間違っているという結果になる

エラーの場所を見つけるのを手伝ってもらえますか?

4

6 に答える 6

5

これを試して:

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;
}

チェックされているキーワードとチェックされていないキーワードを見てみましょう。

于 2013-09-18T10:25:45.737 に答える
1

オーバーフローが発生しています。

long3 つの宣言の代わりに使用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

于 2013-09-18T10:23:54.183 に答える
1

オーバーフローがあります。32 ビットより大きい型を使用する必要があります。(小数の場合は long など)

于 2013-09-18T10:24:03.803 に答える
0

すべての宣言に var を使用しているにもかかわらず long を使用すると、正しい出力が得られます

于 2013-09-18T10:25:39.653 に答える