浮動小数点数型での演算では、ゼロによる除算ゼロ同士の除算Mathクラスでの演算などにより、結果が無限大や非数になる場合があります。 また、場合によっては値として無限大や非数を代入する必要が生じることもあります。

Half/Single/Doubleには、これらの特殊な値を表す定数が以下の静的フィールドとして用意されています。

PositiveInfinityフィールド
正の無限大を表す定数。 正の数をゼロで除算した場合や、演算結果がMaxValueより大きくなる場合にこの値となります。
NegativeInfinityフィールド
負の無限大を表す定数。 負の数をゼロで除算した場合や、演算結果がMinValueより小さくなる場合にこの値となります。
NaNフィールド
非数を表す定数。 ゼロ同士の除算や、非数との演算など、演算の結果が未定義となる場合にこの値となります。
PositiveInfinity/NegativeInfinity/NaNフィールドを参照して正負の無限大・非数を取得する
using System;

class Sample {
  static void Main()
  {
    const double zero = 0.0;
    const double plus = +1.0;
    const double minus = -1.0;

    // ゼロによる除算・定数フィールドから無限大を得る
    Console.WriteLine("{0} {1}", plus / zero, double.PositiveInfinity);
    Console.WriteLine("{0} {1}", minus / zero, double.NegativeInfinity);

    // ゼロ同士の除算・定数フィールドから非数を得る
    Console.WriteLine("{0} {1}", zero / zero, double.NaN);
  }
}
実行結果
+∞ +∞
-∞ -∞
NaN (非数値) NaN (非数値)

.NETでは例外DivideByZeroExceptionが定義されていますが、上記の例にもあるように、Single/Doubleでのゼロ除算では例外はスローされません。 一方、Decimalでゼロ除算となる場合はDivideByZeroExceptionがスローされます。