欢迎来到之路教程(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 修饰符确保跨不同 JVM 和平台的所有浮点运算将提供 IEEE 754 预测的一致和相同的结果。
当我们使用 strictfp 时,JVM 使用可以由标准 Java float
或者 double
表示的值执行浮点计算,保证计算结果在所有 JVM 和平台上完全匹配。
日期:2020-09-17 00:09:58 来源:oir作者:oir