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