浮点数组的double数组

时间:2014-10-14 09:55:38

标签: java arrays floating-point double type-conversion

所以我需要使用类org.apache.commons.math3.stat.StatUtils来计算float数组的平均值,但输入数组应该是double数组。如何将float []转换为double [] ??

谢谢!

2 个答案:

答案 0 :(得分:1)

将数组中的每个值转换为double。 浮动比短一倍,所以你不必担心失去精确度。

创建与float数组长度相同的双精度数组。 然后,你可以将float的数组转换为double数组。

public double[] answer(float[] array){
    double[] newArray = new double[array.length];
    for ( int i = 0 ; i < array.length ; i++ ) 
        newArray[i] = (double) array[i];
    return newArray;
}

答案 1 :(得分:1)

您可以通过定义共同实现目标的逻辑步骤来解决您的问题:

  • 创建与double[]
  • 长度相同的float[]
  • 迭代float[]并在double[]
  • 的相应索引中逐个保存值


传统上或 pre Java 8 之一就是这样:

final double[] doubleArray = new double[floatArray.length];

for (int i = 0; i < floatArray.length; i++) {
    doubleArray[i] = floatArray[i];  // no casting needed
}


使用 Java 8 时,您可以使用Stream API来获得更简洁的解决方案:

IntStream.range(0, floatArray.length).forEach(index -> doubleArray[index] = floatArray[index]);

可能用作功能:

public static double[] convertToDouble(final float[] values) {
    final double[] result = new double[values.length];

    IntStream.range(0, values.length).forEach(index -> result[index] = values[index]);
    return result;
}