【发布时间】:2010-11-14 01:38:46
【问题描述】:
将decimal[] 转换为double[] 的有效且希望优雅的咒语是什么?
我正在处理一些相当大的数组。
【问题讨论】:
将decimal[] 转换为double[] 的有效且希望优雅的咒语是什么?
我正在处理一些相当大的数组。
【问题讨论】:
double[] doubleArray = Array.ConvertAll(decimalArray, x => (double)x);
【讨论】:
decimalArray.Select(d => (double)d).ToArray()快吗?
decimals ConvertAll 在调试中平均持续 628 毫秒,在发布中持续 245 毫秒,您的方法在调试中平均持续 1015 毫秒,在发布中平均持续 573 毫秒。 ConvertAll 也消耗更少的内存 - 它处理了大约。 80,000,000 floats 到 doubles 和您的方法仅在 System.OutOfMemoryException 之前使用相同的设置抛出了大约 30,000,000。在 .NET 4.5 上测试
你也可以使用和扩展类似于这个的类
public static class ArrayExtension
{
public static double[] ToDouble(this float[] arr) =>
Array.ConvertAll(arr, x => (double)x);
}
然后:
double[] doubleArr = decimalArr.ToDouble();
【讨论】: