关键字 strictfp 是 sitict float point 的缩写,指的是精确浮点,它用来确保浮点数运算的准确性。JVM 在执行浮点数运算时,如果没有指定 strictip 关键字,此时计算结果可能会不精确,
而且计算结果在不同平台或厂商的虚拟机上会有不同的结果,导致意想不到的错误。而一旦使
用了 strictfp 来声明一个类、接口或者方法,那么在所声明的范围内,Java 编译器以及运行环
境会完全依照 IEEE 二进制浮点数算术标准(IEEE 754)来执行,在这个关键字声明的范围内
所有浮点数的计算都是精确的。需要注意的是,当一个类被 strietfp 修饰时,所有方法都会自
动被 strictfp 修饰。因此,strictfp 可以保证浮点数运算的精确性,而且在不同的硬件平台上会
有一致的运行结果。下例给出了 strictfip 修饰类的使用方法:
public strictfp class Test {
public static void testStrictfp(){
float f = 0.23654f;
double d = 0.3224233;
double sum =f+d;
System.out.println(sum);
}
public static void main(String[] args) {
testStrictfp();
}
}
运行结果:
0.5589633046110154