Cette stackoverflow question soulève une question intéressante sur le tri des doubles des tableaux avec des valeurs NaN. L'OP a affiché le code suivant:
static void Main(string[] args)
{
double[] someArray = { 4.0, 2.0, double.NaN, 1.0, 5.0, 3.0, double.NaN, 10.0, 9.0, 8.0 };
foreach (double db in someArray)
{
Console.WriteLine(db);
}
Array.Sort(someArray);
Console.WriteLine("\n\n");
foreach (double db in someArray)
{
Console.WriteLine(db);
}
Console.ReadLine();
}
Lorsque vous exécutez ce dans le cadre du .NET framework 3.5, le tableau est trié comme suit:
1,4,NaN,2,3,5,8,9,10,NaN
Lorsque vous l'exécutez .NET 4.0, le tableau est trié un peu plus logiquement:
NaN,NaN,1,2,3,4,5,8,9,10
Je peux comprendre pourquoi il ne sorte bizarrement .NET 3.5 (NaN parce que n'est pas égale, inférieure ou supérieure, n'importe quoi). Je peux aussi comprendre pourquoi il ne sorte de la façon dont il le fait .NET 4.0. Ma question est, pourquoi ce changement de 3.5 à 4.0? Et où est la documentation de Microsoft pour ce changement?