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 = 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()); } }
Sortir
1.006E11
Sortir:
Ci-dessous, nous pouvons voir la sortie dans la console.