Java基础——strictfp关键字「终于解决」

Java (83) 2023-06-24 17:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说Java基础——strictfp关键字「终于解决」,希望能够帮助你!!!。

关键字strictfp是strict float point的缩写,指的是精确浮点,它是用来确保浮点数运算的准确性。

JVM在执行浮点数运算时,如果没有指定strictfp关键字,此时计算结果可能会不精确,而且计算结果在不同平台或厂商的虚拟机上会有不同的结果,导致意想不到的错误。

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

需要注意的是,当一个类被strictfp修饰时,所有方法都会自动被strictfp修饰。

因此,strictfp可以保证浮点数运算的精确性,而且在不同的硬件平台会有一致的运行结果。

示例:

public strictfp class Test { 
   
   int a = 1; 
   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

发表回复