欢迎来到之路教程(on itroad-com)

Java strictfp 示例

让我们看一个用于浮点比较的 strictfp 修饰符示例,它将在所有平台和处理器架构中产生完全相同的结果。

在给定的示例中,我们使用了“Double.MAX_VALUE”值,这是一个非常大的数字,在每个平台中都有不同的表示。
使用strictfp,我们可以确保给定的计算总是产生相同的值。

public strictfp class Main 
{
	public static void main(String[] args) 
	{
		double MAX = Double.MAX_VALUE;

		System.out.println(Double.MAX_VALUE - 1);
	}
}

输出:

1.7976931348623157E308

如何使用strictfp修饰符

strictfp 修饰符可以与

  • class - 类中的所有代码(实例、变量、静态初始值设定项)和嵌套类中的代码将使用 strictfp 计算。
  • 方法 - 方法中的所有代码都将使用 strictfp 计算。
  • interface - 实现该接口的任何类中的所有代码都将使用 strictfp 计算。

strictfp 关键字不能与抽象类和方法一起使用。

请注意,扩展strictfp 超类的子类不会继承strictfp 行为。
覆盖方法可以独立选择是 strictfp 而被覆盖方法不是,反之亦然。

Java strictfp修饰符

在 Java 中,浮点数的表示和计算是和平台相关的。
strictfp 修饰符确保跨不同 JVM 和平台的所有浮点运算将提供 IEEE 754 预测的一致和相同的结果。

当我们使用 strictfp 时,JVM 使用可以由标准 Java float或者 double表示的值执行浮点计算,保证计算结果在所有 JVM 和平台上完全匹配。

日期:2020-09-17 00:09:58 来源:oir作者:oir