V Javi je strictfp je modifikator, ki pomeni strogo plavajočo vejico, ki ni bil predstavljen v osnovni različici Jave, kot je bil predstavljen v Javi različici 1.2. Uporablja se v Javi za omejevanje izračunov s plavajočo vejico in zagotavljanje enakega rezultata na vsaki platformi med izvajanjem operacij v spremenljivki s plavajočo vejico.
Izračuni s plavajočo vejico so odvisni od platforme, tj. drugačen izhod (vrednosti s plavajočo vejico) je dosežen, ko se datoteka razreda izvaja na različnih platformah (16/32/64-bitni procesorji). Za rešitev te vrste težave je bila ključna beseda strictfp uvedena v različici JDK 1.2 z naslednjim IEEE 754 standardi za izračune s plavajočo vejico.
algoritem razvrščanja z združevanjem
Opomba: Modifikator strictfp se uporablja samo z vmesniki in metodami razredov, ni pa uporaben za uporabo s spremenljivkami, kot je prikazano spodaj:
Ilustracija 1: Uporaba ključnih besed z razredi
strictfp class Test {
// All concrete methods here are implicitly strictfp.
}
Ilustracija 2: Uporaba ključnih besed z vmesniki
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: Uporaba ključnih besed z abstraktno metodo v vmesniku
nizovne funkcije v Javi
strictfp interface Test {
double sum();
// Compile-time error here
strictfp double mul();
}
Iz zgornjih ilustracij lahko potegnemo nekaj sklepov:
- Ko je razred ali vmesnik deklariran z modifikatorjem strictfp, so vse metode, deklarirane v razredu/vmesniku, in vsi ugnezdeni tipi, deklarirani v razredu, implicitno strictfp.
- strictfp ne more uporabiti z abstraktnimi metodami. Lahko pa se uporablja z abstraktnimi razredi/vmesniki.
- Ker so metode vmesnika implicitno abstraktne, strictfp ni mogoče uporabiti z nobeno metodo znotraj vmesnika.
- Od različice Jave 17 ključna beseda strictfp NI izrecno zahtevana, saj so vsi izrazi s plavajočo vejico strogo ovrednoteni.
primer:
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()); } }
Izhod
1.006E11
Izhod:
Spodaj lahko vidimo izhod v konzoli.
razlika med tigrom in levom