我们都几乎知道 strictfp 的工作原理。
像这样的东西:
package com.hk.basicjava.tests.strictfp;
import java.util.*;
public class StrictFP {
public static void main(String[] argv) {
double d = Double.MIN_VALUE;
System.out.println("non strictfp : " + notStrictFP(d)); // may be 4.9E-324
System.out.println("strictfp : " + strictFP(d)); // should be 0
}
static double notStrictFP(double a) {
return (a / 2 ) * 2;
}
static strictfp double strictFP(double a) {
return (a / 2 ) * 2 ;
}
}
但是,是否有人知道特定的硬件/操作系统(也许是JRE)组合,在使用和不使用 strictfp 说明符的情况下,方法返回的结果有所不同吗?
我尝试了几种组合,但没有区别。
最佳答案
您会得到一个数字,该数字可以精确地代表 double 型:Double.MIN_VALUE;因此,没有区别也就不足为奇了。如果使用产生不能保留其精度的数字的算术,则相同的算术可以产生两个不同的结果。在这种情况下,strictfp将起作用,其中JVM两次都以相同的方式近似估算答案。
关于java - 对strictfp敏感的JVM的示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14512044/