ключевое слово strictfp в Java

Опубликовано: 15 Февраля, 2022

strictfp - это ключевое слово в java, используемое для ограничения вычислений с плавающей запятой и обеспечения одинакового результата на каждой платформе при выполнении операций с переменной с плавающей запятой.
Вычисления с плавающей запятой зависят от платформы, т. Е. Разные выходные данные (значения с плавающей запятой) достигаются, когда файл класса выполняется на разных платформах (16/32/64 битные процессоры). Чтобы решить эту проблему, в версии JDK 1.2 было введено ключевое слово strictfp в соответствии со стандартами IEEE 754 для вычислений с плавающей запятой.

    Важные моменты:

  • Модификатор strictfp используется только с классами, интерфейсами и методами.
    strictfp класс Test
    {   
        // здесь все конкретные методы
        // неявно strictfp.    
    }
    strictfp интерфейс Тест
    {   
        // все методы здесь становятся неявными 
        // strictfp при использовании во время наследования.    
    }
    класс Автомобиль
    {  
        // strictfp применяется к конкретному методу 
        strictfp void calculateSpeed () {}
    }  
            
  • Когда класс или интерфейс объявляются с модификатором strictfp, тогда все методы, объявленные в классе / интерфейсе, и все вложенные типы, объявленные в классе, неявно являются strictfp.
  • strictfp нельзя использовать с абстрактными методами. Однако его можно использовать с абстрактными классами / интерфейсами.
  • Since methods of an interface are implicitly abstract, strictfp cannot be used with any method inside an interface.
    strictfp interface Test 
    {
        double sum();
        strictfp double mul(); // compile-time error here
    }
    
    //Java program to illustrate strictfp modifier
      
    public class Test
    {
        // calculating sum using strictfp modifier
        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());
        }
    }

    Output:

    1.006E11
    

This article is contributed by Gaurav Miglani. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.