Half/Single/Doubleには、値が非数や無限大かどうかを調べる以下のメソッドが用意されています。
- IsInfinityメソッド
- 値が正または負の無限大かどうか調べる。
値がPositiveInfinityまたはNegativeInfinityとなる場合はtrue、そうでなければfalseが返される。 - IsPositiveInfinityメソッド
- 値が正の無限大かどうか調べる。
値がPositiveInfinityとなる場合はtrue、そうでなければfalseが返される。 - IsNegativeInfinityメソッド
- 値が負の無限大かどうか調べる。
値がNegativeInfinityとなる場合はtrue、そうでなければfalseが返される。 - IsNaNメソッド
- 値が非数かどうか調べる。
値がNaNとなる場合はtrue、そうでなければfalseが返される。
IsInfinity/IsNaNメソッドで値が無限大かどうか・非数かどうかを調べる
Imports System
Class Sample
Shared Sub IsSpecialValue(ByVal d As Double)
' 値が無限大かどうか、非数かどうかを調べる
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()
End Sub
Shared Sub Main()
Dim d0 As Double = 0.0
Dim d1 As Double = +1.0 / 0.0
Dim d2 As Double = -1.0 / 0.0
Dim d3 As Double = 0.0 / 0.0
IsSpecialValue(d0)
IsSpecialValue(d1)
IsSpecialValue(d2)
IsSpecialValue(d3)
End Sub
End Class
実行結果
[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