strictfp有什么作用?

  关键字strictfp是strict float point的缩写,意思是精确浮点,主要作用是确保浮点数运算的准确性。JVM在执行浮点数运算时,如果没有指定strictfp关键字,此时计算结果可能会造成不精确,而且计算结果在不同平台或厂商的虚拟机上会有不同的结果,导致意想不到的错误。

  当我们一旦使用了strictfp类声明一个类、接口或者方法,那么在所声明的范围内,Java编译器以及运行环境会完全依照IEEE二进制浮点数算术标准(IEEE 754)来执行,在这个关键字声明的范围内所有浮点数的计算都是精确的。

  还需要我们注意的是,在一个类被strictfp修饰时,所有方法都会自动被strictfp修饰。因此,strictfp可以保证浮点数运算的精确性,而且在不同的硬件平台上会有一致性的运行结果。下列给出了strictfp修饰类的使用方法:

public strictfp class Test{
    public static void testStrictfp(){
        float f = 0.12365f;
        double d = 0.03496421d;
        double sum = f + d;
        System.out.println(sum);
    }
    public static void main(String[] args){
        testStrictfp();
    }
}

  程序运行结果为:

0.15861420949932098

你可能感兴趣的:(java,jvm,开发语言)