Half/Single/Doubleには、値が非数や無限大かどうかを調べる以下のメソッドが用意されています。
- IsInfinityメソッド
- 値が正または負の無限大かどうか調べる。
値がPositiveInfinityまたはNegativeInfinityとなる場合はtrue、そうでなければfalseが返される。 - IsPositiveInfinityメソッド
- 値が正の無限大かどうか調べる。
値がPositiveInfinityとなる場合はtrue、そうでなければfalseが返される。 - IsNegativeInfinityメソッド
- 値が負の無限大かどうか調べる。
値がNegativeInfinityとなる場合はtrue、そうでなければfalseが返される。 - IsNaNメソッド
- 値が非数かどうか調べる。
値がNaNとなる場合はtrue、そうでなければfalseが返される。
IsInfinity/IsNaNメソッドで値が無限大かどうか・非数かどうかを調べる
using System;
class Sample {
static void IsSpecialValue(double d)
{
// 値が無限大かどうか、非数かどうかを調べる
Console.WriteLine("[Value: {0}]", d);
Console.WriteLine("IsInfinity? {0}", double.IsInfinity(d));
Console.WriteLine("IsPositiveInfinity? {0}", double.IsPositiveInfinity(d));
Console.WriteLine("IsNegativeInfinity? {0}", double.IsNegativeInfinity(d));
Console.WriteLine("IsNaN? {0}", double.IsNaN(d));
Console.WriteLine();
}
static void Main()
{
double d0 = 0.0;
double d1 = +1.0 / 0.0;
double d2 = -1.0 / 0.0;
double d3 = 0.0 / 0.0;
IsSpecialValue(d0);
IsSpecialValue(d1);
IsSpecialValue(d2);
IsSpecialValue(d3);
}
}
実行結果
[Value: 0] IsInfinity? False IsPositiveInfinity? False IsNegativeInfinity? False IsNaN? False [Value: ∞] IsInfinity? True IsPositiveInfinity? True IsNegativeInfinity? False IsNaN? False [Value: -∞] IsInfinity? True IsPositiveInfinity? False IsNegativeInfinity? True IsNaN? False [Value: NaN] IsInfinity? False IsPositiveInfinity? False IsNegativeInfinity? False IsNaN? True