mot-clé strictfp en java

mot-clé strictfp en java

En Java, le strictfp est un modificateur qui signifie virgule flottante stricte qui n'a pas été introduit dans la version de base de Java car il a été introduit dans la version Java 1.2. Il est utilisé en Java pour restreindre les calculs à virgule flottante et garantir le même résultat sur chaque plate-forme lors de l'exécution d'opérations dans la variable à virgule flottante. 
Les calculs à virgule flottante dépendent de la plate-forme, c'est-à-dire que des sorties différentes (valeurs à virgule flottante) sont obtenues lorsqu'un fichier de classe est exécuté sur différentes plates-formes (processeurs 16/32/64 bits). Pour résoudre ce type de problème, le mot clé strictfp a été introduit dans la version JDK 1.2 en suivant IEEE 754 normes pour les calculs à virgule flottante. 

Note: Le modificateur strictfp est utilisé uniquement avec les interfaces et les méthodes de classes, mais ne s'applique pas aux variables comme illustré ci-dessous :

Illustration 1 : Utilisation des mots clés avec les classes 

 strictfp class Test {   

// All concrete methods here are implicitly strictfp.
}

Illustration 2 : Utilisation des mots clés avec les interfaces 

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

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

Illustration 3 : Utilisation des mots clés avec la méthode abstraite dans une interface

 strictfp interface Test {   
double sum();

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

Certaines conclusions peuvent être tirées des illustrations ci-dessus :

  • Lorsqu'une classe ou une interface est déclarée avec le modificateur strictfp, alors toutes les méthodes déclarées dans la classe/interface et tous les types imbriqués déclarés dans la classe sont implicitement strictfp.
  • strictfp ne peut pas être utilisé avec des méthodes abstraites. Cependant, il peut être utilisé avec des classes/interfaces abstraites.
  • Étant donné que les méthodes d'une interface sont implicitement abstraites, strictfp ne peut être utilisé avec aucune méthode à l'intérieur d'une interface.
  • À partir de la version Java 17, le mot-clé strictfp n'est PAS requis explicitement car toutes les expressions à virgule flottante sont strictement évaluées.

Exemple: 

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

Sortir
1.006E11  

Sortir: 

Ci-dessous, nous pouvons voir la sortie dans la console.

Écran de sortie  

Créer un quiz