float, doubleの場合、NaN(非数)は-∞(負の無限大)や他の数よりも小さいと扱われる点に注意が必要です。
浮動小数点型の値のソート順序
Imports System
Class Sample
Shared Sub Main()
Dim doubleArray As Double() = New Double() { _
0.0, 1.0, -1.0, 0.01, -0.01, _
double.MaxValue, double.MinValue, _
double.PositiveInfinity, double.NegativeInfinity, double.NaN _
}
Array.Sort(doubleArray)
Console.Write("Double: ")
Console.WriteLine(string.Join(", ", doubleArray))
End Sub
End Class
実行結果
double: NaN, -Infinity, -1.79769313486232E+308, -1, -0.01, 0, 0.01, 1, 1.79769313486232E+308, Infinity