C# 将十进制数组转换为双数组
将C# 将十进制数组转换为双数组,c#,arrays,double,decimal,C#,Arrays,Double,Decimal,将十进制[]转换为双[]是一种高效且希望优雅的咒语吗? 我正在使用一些相当大的数组。您还可以使用与此类似的类和扩展类 double[] doubleArray = Array.ConvertAll(decimalArray, x => (double)x); public static class ArrayExtension { public static double[] ToDouble(this float[] arr) =>
十进制[]
转换为双[]
是一种高效且希望优雅的咒语吗?
我正在使用一些相当大的数组。您还可以使用与此类似的类和扩展类
double[] doubleArray = Array.ConvertAll(decimalArray, x => (double)x);
public static class ArrayExtension
{
public static double[] ToDouble(this float[] arr) =>
Array.ConvertAll(arr, x => (double)x);
}
然后:
这会比
十进制数组快吗?选择(d=>(double)d.ToArray()
?@Tobias我也很感兴趣,所以我创建了一些小测试,你的问题的答案是肯定的,但要快多少,这取决于这两种类型,也取决于您是否处于调试或发布阶段-对于20000000decimal
sConvertAll
,您的方法在调试时平均持续628ms,在发布时平均持续245ms,在我的计算机上,您的方法在调试时平均持续1015ms,在发布时平均持续573msConvertAll
也消耗更少的内存-它处理了大约8000000个float
s到double
s,并且您的方法在系统之前仅处理了大约30000000个。OutOfMemoryException
是使用相同的设置引发的。在.NET4.5上测试
double[] doubleArr = decimalArr.ToDouble();