使用Array.Sort()进行浮点排序

MaT*_*MaT 2 .net c# arrays sorting

我需要在C#中对某些对象中的某些距离进行排序float.我使用委托并对Array.Sort它们进行排序,但似乎我无法使用float.

转换到时,如何保持浮点数的精度int

是否有可能使用Array.Sortfloat替代的int回报呢?

不使用LINQ.

max*_*max 9

Array.Sort<T>(T[] array, Comparison<T> comparison)只要您提供正确的比较委托,就不限于任何类型.比较委托应该返回包含比较操作结果的整数值,而不是要与某些东西进行比较的值.例如,如果您有X包含float属性的类,则Property可以按如下方式对它们进行排序:

public sealed class X
{
    public float Property { get; set; }
}

static void Test()
{
    var arr = new X[]
    {
        new X { Property = 5.5f },
        new X { Property = 2.5f },
        new X { Property = 6.5f },
        new X { Property = 1.2f },
    };
    Array.Sort(arr, (a, b) => a.Property.CompareTo(b.Property));
}
Run Code Online (Sandbox Code Playgroud)


Ily*_*nov 6

您可以使用LINQ OrderBy扩展方法

var arr = new[] { 1.3f, 1.4f };
arr.OrderBy( a => a ).ToArray();
Run Code Online (Sandbox Code Playgroud)