【问题标题】:convert Decimal array to Double array将 Decimal 数组转换为 Double 数组
【发布时间】:2010-11-14 01:38:46
【问题描述】:

decimal[] 转换为double[] 的有效且希望优雅的咒语是什么? 我正在处理一些相当大的数组。

【问题讨论】:

    标签: c# arrays double decimal


    【解决方案1】:
    double[] doubleArray = Array.ConvertAll(decimalArray, x => (double)x);
    

    【讨论】:

    • 这会比decimalArray.Select(d => (double)d).ToArray()快吗?
    • @Tobias 我也很感兴趣,所以我创建了一些小测试,您的问题的答案是 yes 但是速度快多少,这取决于这两种类型以及是否您处于调试或发布状态 - 20,000,000 decimals ConvertAll 在调试中平均持续 628 毫秒,在发布中持续 245 毫秒,您的方法在调试中平均持续 1015 毫秒,在发布中平均持续 573 毫秒。 ConvertAll 也消耗更少的内存 - 它处理了大约。 80,000,000 floats 到 doubles 和您的方法System.OutOfMemoryException 之前使用相同的设置抛出了大约 30,000,000。在 .NET 4.5 上测试
    【解决方案2】:

    你也可以使用和扩展类似于这个的类

    public static class ArrayExtension
    {
    
       public static double[] ToDouble(this float[] arr) => 
                                        Array.ConvertAll(arr, x => (double)x);
    
    }
    

    然后:

    double[] doubleArr = decimalArr.ToDouble();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      • 2013-12-09
      相关资源
      最近更新 更多