słowo kluczowe strictfp w Javie

słowo kluczowe strictfp w Javie

W Javie ścisłefp to modyfikator oznaczający ścisłą liczbę zmiennoprzecinkową, który nie został wprowadzony w podstawowej wersji Javy, tak jak został wprowadzony w Javie w wersji 1.2. Jest używany w Javie w celu ograniczenia obliczeń zmiennoprzecinkowych i zapewnienia tego samego wyniku na każdej platformie podczas wykonywania operacji na zmiennej zmiennoprzecinkowej. 
Obliczenia zmiennoprzecinkowe zależą od platformy, tj. różne wyniki (wartości zmiennoprzecinkowe) są osiągane, gdy plik klasy jest uruchamiany na różnych platformach (procesory 16/32/64-bitowe). Aby rozwiązać tego typu problem, w wersji JDK 1.2 wprowadzono słowo kluczowe strictfp w następujący sposób IEEE754 standardy obliczeń zmiennoprzecinkowych. 

Notatka: Modyfikator strictfp jest używany tylko z interfejsami i metodami klas, ale nie ma zastosowania do zmiennych, jak pokazano poniżej:

Ilustracja 1: Użycie słów kluczowych w klasach 

 strictfp class Test {   

// All concrete methods here are implicitly strictfp.
}

Ilustracja 2: Użycie słów kluczowych w interfejsach 

 strictfp interface Test {    
// All methods here becomes implicitly
// strictfp when used during inheritance.
}

class Car {
// strictfp applied on a concrete method
strictfp void calculateSpeed(){}
}

Ilustracja 3: Użycie słowa kluczowego metodą abstrakcyjną w interfejsie

 strictfp interface Test {   
double sum();

// Compile-time error here
strictfp double mul();
}

Z powyższych ilustracji można wyciągnąć następujące wnioski:

  • Kiedy klasa lub interfejs są zadeklarowane z modyfikatorem strictfp, wówczas wszystkie metody zadeklarowane w klasie/interfejsie i wszystkie typy zagnieżdżone zadeklarowane w klasie są domyślnie strictfp.
  • ścisłefp nie mogę stosować metody abstrakcyjne. Można go jednak używać z klasami/interfejsami abstrakcyjnymi.
  • Ponieważ metody interfejsu są w sposób dorozumiany abstrakcyjne, strictfp nie może być używane z żadną metodą wewnątrz interfejsu.
  • Od wersji Java 17 słowo kluczowe strictfp NIE jest wymagane jawnie, ponieważ wszystkie wyrażenia zmiennoprzecinkowe są ściśle oceniane.

Przykład: 

Java
   // Java program to illustrate strictfp modifier   // Usage in Classes   // Main class   class   GFG     {      // Method 1      // Calculating sum using strictfp modifier      public     strictfp     double     sum  ()      {      double     num1     =     10  e  +  10  ;      double     num2     =     6e+08  ;      // Returning the sum      return     (  num1     +     num2  );      }      // Method 2      // Main driver method      public     static     void     main  (  String  []     args  )      {      // Creating object of class in main() method      GFG     t     =     new     GFG  ();      // Here we have error of putting strictfp and      // error is not found public static void main method      System  .  out  .  println  (  t  .  sum  ());      }   }   

Wyjście
1.006E11  

Wyjście: 

Poniżej możemy zobaczyć wynik w konsoli.

Ekran wyjściowy  

Utwórz quiz