我们如何在现实生活中使用 strictfp 方法?

Ars*_*der -1 java strictfp java-17

这个问题不是这个问题的重复。我知道strictfpjava中的关键字就是用于目的的。但是我们如何在现实生活中使用它呢?它的优点是什么?

Dav*_*rad 8

从 Java 17 和JEP 306开始,您不会使用它:

\n
\n

使浮点运算始终严格,而不是同时具有严格的浮点语义 ( strictfp) 和略有不同的默认浮点语义。

\n

SSE2(流 SIMD 扩展 2)扩展在 Pentium 4 和大约 2001 年开始的更高版本处理器中提供,可以以简单的方式支持严格的 JVM 浮点运算,而无需过多的开销。

\n

由于 Intel 和 AMD 都长期支持 SSE2 和更高版本的扩展,这些扩展允许对严格浮点语义的自然支持,因此具有不同于严格的默认浮点语义的技术动机不再存在。

\n
\n

另请参见JLS\xc2\xa0\xc2\xa78.4.3.5

\n
\n

方法声明上的修饰符strictfp已过时,不应在新代码中使用。它的存在或不存在对运行时没有影响。

\n
\n

从 Java 的最新 LTE 版本开始,语义上不再有任何差异,并且对于修饰符的使用出现了新的编译器警告strictfp

\n
public class Strictly {\n    public strictfp double calc(double d1, double d2) {\n        return d1 * d2;\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n
\n$ javac Strictly.java\nStrictly.java:2: 警告: [strictfp] 从版本 17 开始,所有浮点表达式都经过严格计算,不需要 \'strictfp\'\n public strictfp double calc(double d1 , 双 d2) {\n ^\n1 警告\n
\n