6

整数をゼロで除算するとコンパイル時エラーが発生しますが、doubleの場合はコンパイルエラーは発生しませんが、実行時に結果として無限大/NaNが発生します。ゼロ除算の例外に関して、intとdoubleの動作が異なる理由はありますか?

void Main()
{
    int number = 20;
    var result1 = number/0; // Divide by zero compile time exception

    double doubleNumber = 20;
    var result2 = doubleNumber/0.0; // no compile time error. Result is infinity or NaN
}
4

3 に答える 3

8

それが定義されているからです。整数の場合、無限大とNaNに特別な値はないため、コンパイル時に問題を特定できる場合、コンパイラーはエラーをスローします。

于 2012-03-22T08:03:49.293 に答える
2

理論的には、ゼロによる除算は無限大になるはずですが、整数データ型には無限大を表すものはありません。doubleデータ型はそうするので、そこで例外をスローする必要はありません。

于 2012-03-22T08:03:47.170 に答える
1

彼らの数学的背景のため。無限大は浮動小数点数に対して定義されますが、整数に対しては定義されません。

于 2012-03-22T08:03:28.447 に答える