U Javi je strogifp je modifikator koji označava striktni pokretni zarez koji nije uveden u osnovnoj verziji Jave jer je uveden u Javi verziji 1.2. Koristi se u Javi za ograničavanje izračuna s pomičnim zarezom i osiguravanje istog rezultata na svakoj platformi tijekom izvođenja operacija u varijabli s pomičnim zarezom.
Izračuni s pomičnim zarezom ovise o platformi, tj. drugačiji izlaz (vrijednosti s pomičnim zarezom) postiže se kada se datoteka klase izvodi na različitim platformama (16/32/64-bitni procesori). Za rješavanje ove vrste problema ključna riječ strictfp uvedena je u verziju JDK 1.2 slijedeći IEEE 754 standardi za izračune s pomičnim zarezom.
Bilješka: modifikator strictfp koristi se samo sa sučeljima i metodama klasa, ali nije primjenjiv za primjenu s varijablama kao što je ilustrirano u nastavku:
Ilustracija 1: Upotreba ključnih riječi s klasama
inorder traversal
strictfp class Test {
// All concrete methods here are implicitly strictfp.
}
Ilustracija 2: Upotreba ključne riječi sa sučeljima
java podniz sadrži
strictfp interface Test {
// All methods here becomes implicitly
// strictfp when used during inheritance.
}
class Car {
// strictfp applied on a concrete method
strictfp void calculateSpeed(){}
}
Ilustracija 3: Upotreba ključne riječi s metodom sažetka u sučelju
strictfp interface Test {
double sum();
// Compile-time error here
strictfp double mul();
}
Iz gornjih ilustracija mogu se izvući neki zaključci kako slijedi:
- Kada je klasa ili sučelje deklarirano modifikatorom strictfp tada su sve metode deklarirane u klasi/sučelju i svi ugniježđeni tipovi deklarirani u klasi implicitno strictfp.
- strogifp ne može koristiti s apstraktnim metodama. Međutim, može se koristiti s apstraktnim klasama/sučeljima.
- Budući da su metode sučelja implicitno apstraktne, strictfp se ne može koristiti ni s jednom metodom unutar sučelja.
- Od verzije Jave 17 ključna riječ strictfp NIJE potrebna eksplicitno jer se svi izrazi s pomičnim zarezom strogo procjenjuju.
Primjer:
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()); } }
Izlaz
1.006E11
Izlaz:
Ispod možemo vidjeti izlaz u konzoli.
veličina lateks fonta