相关疑难解决方法(0)

为什么.NET 4.0对此数组的排序与.NET 3.5不同?

这个stackoverflow问题提出了一个关于使用NaN值对双数组进行排序的有趣问题.OP发布了以下代码:

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();
}
Run Code Online (Sandbox Code Playgroud)

在.NET 3.5框架下运行时,数组按如下方式排序:

1,4,NaN,2,3,5,8,9,10,NaN

当您在.NET 4.0下运行它时,数组的逻辑排序更为一些:

NaN,NaN,1,2,3,4,5,8,9,10

我可以理解为什么它会在.NET 3.5中奇怪地排序(因为NaN不等于,小于或大于任何东西).我也可以理解为什么它会像在.NET 4.0中那样排序.我的问题是,为什么这个从3.5变为4.0?这个变化的Microsoft文档在哪里?

.net c#

44
推荐指数
2
解决办法
2148
查看次数

c#NaN比较Equals()和==之间的差异

看一下这个 :

    var a = Double.NaN;

    Console.WriteLine(a == a);
    Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)

打印"假"

    var a = Double.NaN;

    Console.WriteLine(a.Equals(a));
    Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)

打印"真实"!

为什么打印"真实"?由于浮点数规范,NaN的值不等于它自己!所以似乎Equals()方法实现错误......我错过了什么?

c# equals nan

15
推荐指数
3
解决办法
2476
查看次数

如何在 C# 中处理接受 IComparable 的通用方法的 double.NaN

我有一个通用GetMinimum方法。它接受 IComparable 类型的数组(因此它可能是string[]or double[])。在这种情况下double[],我如何实现此方法来忽略这些double.NaN值?(我正在寻找好的做法)

当我传递这个数组时

double[] inputArray = { double.NaN, double.NegativeInfinity, -2.3, 3 };
Run Code Online (Sandbox Code Playgroud)

它返回 double.NaN!

public T GetMinimum<T>(T[] array) where T : IComparable<T>
{
    T result = array[0];
    foreach (T item in array)
    {
        if (result.CompareTo(item) > 0)
        {
            result = item;
        }
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

c# generics icomparable nan

5
推荐指数
1
解决办法
961
查看次数

随机浮点数的最佳排序算法是什么?

我的一位同事今天下午将这个问题悬空,让我感到好奇.我精通排序algos,但缺乏compsci/compeng的正式学位(我有点厌恶承认),不能真正指责这一点.:p

哦,是的,这在C#/ .NET实现的上下文中是温和的...以防万一改变了一些事情.

多谢你们.:)

.net c# sorting algorithm

3
推荐指数
1
解决办法
2844
查看次数

标签 统计

c# ×4

.net ×2

nan ×2

algorithm ×1

equals ×1

generics ×1

icomparable ×1

sorting ×1