📜  Java中的strictfp关键字

📅  最后修改于: 2020-03-29 08:00:31             🧑  作者: Mango

strictfp是Java中的一个关键字,用于限制浮点计算并确保在每个平台上执行相同的结果,同时对浮点变量执行操作。
浮点计算取决于平台,即,当类文件在不同的平台(16/32/64位处理器)上运行时,可获得不同的输出(浮点值)。为了解决此类问题,在JDK 1.2版本中,通过遵循IEEE 754标准进行浮点计算,引入了strictfp关键字。
重要事项:

  • strictfp修饰符仅与类、接口和方法一起使用。
    strictfp class Test
    {
        // 所有的方法是
        // 隐式strictfp.
    }
    strictfp interface Test
    {
        // 在继承的时候,所有的方法,隐式strictfp
    }
    class Car
    {
        // strictfp被应用于具体的方法
        strictfp void calculateSpeed(){}
    }
  • 当使用strictfp修饰符声明一个类或接口时,在类/接口中声明的所有方法以及在该类中声明的所有嵌套类型都是隐式strictfp。
  • strictfp不能与抽象方法一起使用。但是,它可以与抽象类/接口一起使用。
  • 由于接口的方法是隐式抽象的,因此strictfp不能与接口内部的任何方法一起使用。
    strictfp interface Test
    {
        double sum();
        strictfp double mul(); // 编译错误
    }
    
    //Java展示strictfp修饰符
    public class Test
    {
        // 使用strictfp计算和
        public strictfp double sum()
        {
            double num1 = 10e+10;
            double num2 = 6e+08;
            return (num1+num2);
        }
        public static strictfp void main(String[] args)
        {
            Test t = new Test();
            System.out.println(t.sum());
        }
    }

    输出:

    1.006E11