float, doubleの場合、NaN(非数)は-∞(負の無限大)や他の数よりも小さいと扱われる点に注意が必要です。
浮動小数点型の値のソート順序
using System;
class Sample {
static void Main()
{
var doubleArray = 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));
}
}
実行結果
double: NaN, -Infinity, -1.79769313486232E+308, -1, -0.01, 0, 0.01, 1, 1.79769313486232E+308, Infinity