java - 使用 Java 迭代所有浮点值

标签 java floating-point reinterpret-cast

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

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

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

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

最佳答案

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

打印从 1 开始的接下来 100 个 float 的示例:

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

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

关于java - 使用 Java 迭代所有浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52129125/

相关文章:

java - 调整窗口大小时使用面板中设置的图标调整 JLabel 的大小

java - 如何返回多个值?

C++ 初学者使用序列和 float

math - float 学坏了吗?

c++ - 以下reinterpret_cast是否会导致未定义的行为?

c++ - Placement new 的返回值与其操作数的强制转换值之间是否存在(语义)差异?

java - Java 类加载器的问题

java - pig : Reparse Strings into Tuples in Java

c++ - 使用 reinterpret_cast 和 static_cast 模拟具有多态参数的模板中的协变和逆变?

java - 在 Java 的双重算术中得到错误的答案