使用Java遍历所有浮点值

时间:2018-09-01 14:36:17

标签: java floating-point reinterpret-cast

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

在C ++中,我只是用一个无符号的int遍历了必要的范围,然后将其重新解释为一个浮点指针

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

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

2 个答案:

答案 0 :(得分:5)

您可以使用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);
}

答案 1 :(得分:3)

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

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