paraula clau strictfp en java
En Java el strictfp és un modificador que significa estricte punt flotant que no es va introduir a la versió base de Java com es va introduir a la versió 1.2 de Java. S'utilitza a Java per restringir els càlculs de coma flotant i garantir el mateix resultat a totes les plataformes mentre es realitza operacions en la variable de coma flotant.
Els càlculs de coma flotant depenen de la plataforma, és a dir, s'aconsegueix una sortida diferent (valors de coma flotant) quan s'executa un fitxer de classe en diferents plataformes (processadors de 16/32/64 bits). Per resoldre aquest tipus de problemes es va introduir la paraula clau strictfp a la versió 1.2 del JDK seguint el següent IEEE 754 estàndards per als càlculs de coma flotant.
Nota: El modificador strictfp només s'utilitza amb interfícies i mètodes de classes, però no s'aplica per aplicar amb variables tal com es mostra a continuació:
Il·lustració 1: Ús de paraules clau amb les classes
strictfp class Test {
// All concrete methods here are implicitly strictfp.
}Il·lustració 2: Ús de paraules clau amb interfícies
strictfp interface Test {
// All methods here becomes implicitly
// strictfp when used during inheritance.
}
class Car {
// strictfp applied on a concrete method
strictfp void calculateSpeed(){}
}Il·lustració 3: Ús de paraules clau amb el mètode abstracte en una interfície
strictfp interface Test {
double sum();
// Compile-time error here
strictfp double mul();
}De les il·lustracions anteriors es poden extreure algunes conclusions de la següent manera:
- Quan una classe o una interfície es declara amb el modificador strictfp, tots els mètodes declarats a la classe/interfície i tots els tipus imbricats declarats a la classe són implícitament strictfp.
- strictfp no pot utilitzar-se amb mètodes abstractes. Tanmateix, es pot utilitzar amb classes/interfícies abstractes.
- Com que els mètodes d'una interfície són implícitament abstractes, strictfp no es pot utilitzar amb cap mètode dins d'una interfície.
- A partir de la versió Java 17, la paraula clau strictfp NO és necessària de manera explícita, ja que totes les expressions de coma flotant s'avaluen estrictament.
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 ()); } }
Sortida
1.006E11
Sortida:
A continuació podem veure la sortida a la consola.