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

新手上路,请多包涵

我有一个 double[][] 数组,我想将一行放入 float[] 数组中。铸造一开始没有用,所以我寻找不同的东西。

在 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);

原文由 Roman Rdgz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

不,投射数组是行不通的。您需要显式转换每个项目:

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

原文由 Jon Skeet 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是一个您可以放在库中并反复使用的函数:

 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;
}

原文由 NPE 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题