logo

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 = 10e+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' src='//techcodeview.com/img/java/66/strictfp-keyword-in-java.webp' title= 

Utwórz quiz