parola chiave strictfp in Java

parola chiave strictfp in Java

A Giava il strictfp è un modificatore che sta per virgola mobile rigoroso che non è stato introdotto nella versione base di Java poiché è stato introdotto nella versione Java 1.2. Viene utilizzato in Java per limitare i calcoli in virgola mobile e garantire lo stesso risultato su ogni piattaforma durante l'esecuzione di operazioni nella variabile in virgola mobile. 
I calcoli in virgola mobile dipendono dalla piattaforma, ovvero si ottiene un output diverso (valori in virgola mobile) quando un file di classe viene eseguito su piattaforme diverse (processori a 16/32/64 bit). Per risolvere questo tipo di problema è stata introdotta la parola chiave strictfp nella versione JDK 1.2 come segue IEEE754 standard per i calcoli in virgola mobile. 

Nota: Il modificatore strictfp viene utilizzato solo con le interfacce e i metodi delle classi, ma non è applicabile con le variabili come illustrato di seguito:

Illustrazione 1: Utilizzo delle parole chiave con le classi 

 strictfp class Test {   

// All concrete methods here are implicitly strictfp.
}

Illustrazione 2: Utilizzo delle parole chiave con le interfacce 

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

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

Illustrazione 3: Utilizzo delle parole chiave con il metodo Abstract in un'interfaccia

 strictfp interface Test {   
double sum();

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

Dalle illustrazioni sopra riportate si possono trarre alcune conclusioni come segue:

  • Quando una classe o un'interfaccia viene dichiarata con il modificatore strictfp, tutti i metodi dichiarati nella classe/interfaccia e tutti i tipi nidificati dichiarati nella classe sono implicitamente strictfp.
  • strictfp non può essere utilizzato con metodi astratti. Tuttavia può essere utilizzato con classi/interfacce astratte.
  • Poiché i metodi di un'interfaccia sono implicitamente astratti, strictfp non può essere utilizzato con alcun metodo all'interno di un'interfaccia.
  • Dalla versione Java 17 la parola chiave strictfp NON è richiesta esplicitamente poiché tutte le espressioni a virgola mobile vengono valutate rigorosamente.

Esempio: 

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  ());      }   }   

Produzione
1.006E11  

Produzione: 

Di seguito possiamo vedere l'output in console.

Schermata di uscita  

Crea quiz