java - 无 strictfp 的最小精度单位

标签 java floating-point floating-accuracy numerical-analysis strictfp

看看数学课,ulp method :

public static float ulp(float f)

如果应用该方法的方式如下:Math.ulp(Float.MAX_VALUE),则会出现 Javadoc 文档中的这条规则:

If the argument is ±Float.MAX_VALUE, then the result is equal to 2104.

能否确保从一台机器到另一台机器,这个数字 (2104) 始终是那个数字,即使 float 不是 strictfp

最佳答案

缺乏strictfp不会神奇地让你的数字做奇怪的事情。

它只是允许更精确的平台执行比结果实际拥有的更精确的计算(即,如果您在 float 上进行计算,那么非 strictfp 代码实际上可能会使用 40 位浮点寄存器作为中间步骤)。

这不会改变您在代码中看到的输入和输出仍然始终是 float 的事实。

换句话说:strictfp 不是 float 变量或数字的属性。它是在 floatdouble 上运行的代码的属性。

简而言之:是的,如果规范说要返回这个数字,那么它就会被返回。

关于java - 无 strictfp 的最小精度单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57972340/

相关文章:

java - 寻求有关在 KDE 3 上的桌面之间移动 Qt 4 和 Java 应用程序的建议

java - 选择图片并上传到服务器

ios - 如何通过 Airwatch 推送浮点 App Config 值

math - float 学运算是否被破坏?

c - MIL-STD-1750A 到十进制转换示例

java - JPA 中的持久性到底是什么?它是如何连接到EntityManagerFactory的?

c++ - 有符号零的最小值和最大值

mysql - FLOAT 有几位数字?

math - 为什么浮点运算在添加小数时不能给出准确的结果?

Java EE 获取有关应用程序当前运行环境的信息