1

查看数学类,ulp方法

public static float ulp(float f)

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

如果参数为 ±Float.MAX_VALUE,则结果等于 2 104

即使浮点数不是strictfp,是否可以确保从一台机器到另一台机器这个数字(2 104)总是那个数字?

4

1 回答 1

1

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

它只是允许具有更高精度的平台以比实际结果更高的精度执行计算(即,如果您在floatstrictfp代码上进行计算,则可能实际上将 40 位浮点寄存器用于中间步骤)。

这不会改变您在代码中看到的输入和输出仍将始终为float.

换句话说:strictfp不是float变量或数字的属性。它是对or进行操作的代码floatdouble的属性。

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

于 2019-09-17T10:39:03.793 回答