浮動小数点数型での演算では、ゼロによる除算やゼロ同士の除算、Mathクラスでの演算などにより、結果が無限大や非数になる場合があります。 また、場合によっては値として無限大や非数を代入する必要が生じることもあります。
Half/Single/Doubleには、これらの特殊な値を表す定数が以下の静的フィールドとして用意されています。
- PositiveInfinityフィールド
- 正の無限大を表す定数。 正の数をゼロで除算した場合や、演算結果がMaxValueより大きくなる場合にこの値となります。
- NegativeInfinityフィールド
- 負の無限大を表す定数。 負の数をゼロで除算した場合や、演算結果がMinValueより小さくなる場合にこの値となります。
- NaNフィールド
- 非数を表す定数。 ゼロ同士の除算や、非数との演算など、演算の結果が未定義となる場合にこの値となります。
.NETでは例外DivideByZeroExceptionが定義されていますが、上記の例にもあるように、Single/Doubleでのゼロ除算では例外はスローされません。 一方、Decimalでゼロ除算となる場合はDivideByZeroExceptionがスローされます。