使用Java迭代所有浮点值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Java迭代所有浮点值相关的知识,希望对你有一定的参考价值。

我正在开发一个数学函数,并希望在一个范围内的每个浮点值上测试其输出。我已经在C ++中完成了这个,但现在我想将性能与Java进行比较。如何遍历Java中的所有浮点值?

在C ++中,我只是使用unsigned int迭代必要的范围,然后将其重新解释为float指针

float *x = reinterpret_cast<float*>(&i);

但是,如何在Java中完成?最好快点,因为我正在测试性能(没有String解决方案,谢谢你:D)。如果没有快速的方法,我想我可以将一百万个预先计算成一个数组并迭代它们。但这会破坏缓存性能,所以我认为使用随机数对我的情况会更好,尽管它不会完全达到所有值。

答案

您可以使用Math.nextUp(float)获取下一个浮点数。

从1开始打印下一个100个浮点的示例:

float n = 1f;
System.out.println(n);

for (int i = 0; i < 100; i++) {
    n = Math.nextUp(n);
    System.out.println(n);
}
另一答案

在Java中,您可以使用方法Float.intBitsToFloat(int)

for (int i = iMin; i < iMax; i++) {
    float f = Float.intBitsToFloat(i);
   ...
}

以上是关于使用Java迭代所有浮点值的主要内容,如果未能解决你的问题,请参考以下文章

如何在java和selenium中读取excel中的浮点值

TypeError:浮点对象在我的代码中不可迭代[重复]

如何在Django视图中使用for循环返回每次迭代[关闭]

如何在Java中将浮点数组转换为双精度数组?

JNI:如何将一组数据从 c++ 转换为 Java

Opencv如何使用MatIterator迭代具有浮点RGB值的彩色图像?