将双精度数组转换为浮点数组

2022-09-04 23:53:49

我有一个双[][]数组,我想让一行进入浮点数组。选角起初不起作用,所以我寻找不同的东西。

我在stackoverflow中发现了一个优雅的解决方案,可以将Object[]转换为String[],如果我将Object[]转换为float[],它也可以工作。

那么:有没有一种优雅的方法可以将double[]转换为float[],或者将double[]转换为Object[],以便我可以在其他帖子中使用代码?

我将提供我正在做什么的示例代码,即使我认为它不是必需的:

double[][] datos = serie.toArray();
double[][] testArray = {{1.0, 2.0, 3.0}, {4.0, 5.0, 6.0}, {7.0, 8.0, 9.0}};
double[] doubleArray = Arrays.copyOf(testArray[1], testArray[1].length);
// This would be great but doesn't exist:
//float[] floatArray = Arrays.copyOf(doubleArray, doubleArray.length, float[].class);

答案 1

否,强制转换数组将不起作用。您需要显式转换每个项目:

float[] floatArray = new float[doubleArray.length];
for (int i = 0 ; i < doubleArray.length; i++)
{
    floatArray[i] = (float) doubleArray[i];
}

答案 2

下面是一个函数,您可以将其放在库中并一遍又一遍地使用:

float[] toFloatArray(double[] arr) {
  if (arr == null) return null;
  int n = arr.length;
  float[] ret = new float[n];
  for (int i = 0; i < n; i++) {
    ret[i] = (float)arr[i];
  }
  return ret;
}