kľúčové slovo strictfp v jazyku Java
V jazyku Java strictfp je modifikátor, ktorý znamená striktnú pohyblivú desatinnú čiarku, ktorá nebola zavedená v základnej verzii Java, ako bola predstavená vo verzii Java 1.2. Používa sa v Jave na obmedzenie výpočtov s pohyblivou rádovou čiarkou a zabezpečenie rovnakého výsledku na každej platforme pri vykonávaní operácií s premennou s pohyblivou rádovou čiarkou.
Výpočty s pohyblivou rádovou čiarkou sú závislé od platformy, t. j. odlišný výstup (hodnoty s pohyblivou rádovou čiarkou) sa dosiahne, keď je súbor triedy spustený na rôznych platformách (16/32/64-bitové procesory). Na vyriešenie tohto typu problému bolo zavedené kľúčové slovo strictfp vo verzii JDK 1.2 nasledujúcim spôsobom IEEE 754 štandardy pre výpočty s pohyblivou rádovou čiarkou.
Poznámka: Modifikátor strictfp sa používa iba s rozhraniami a metódami tried, ale nedá sa použiť s premennými, ako je znázornené nižšie:
Ilustrácia 1: Použitie kľúčových slov s triedami
strictfp class Test {
// All concrete methods here are implicitly strictfp.
}Obrázok 2: Použitie kľúčových slov s rozhraniami
strictfp interface Test {
// All methods here becomes implicitly
// strictfp when used during inheritance.
}
class Car {
// strictfp applied on a concrete method
strictfp void calculateSpeed(){}
}Obrázok 3: Použitie kľúčových slov s abstraktnou metódou v rozhraní
strictfp interface Test {
double sum();
// Compile-time error here
strictfp double mul();
}Z vyššie uvedených ilustrácií možno vyvodiť niektoré závery:
- Keď je trieda alebo rozhranie deklarované s modifikátorom strictfp, potom všetky metódy deklarované v triede/rozhraní a všetky vnorené typy deklarované v triede sú implicitne strictfp.
- strictfp nemôže použiť s abstraktnými metódami. Môže sa však použiť s abstraktnými triedami/rozhraniami.
- Keďže metódy rozhrania sú implicitne abstraktné, strictfp nemožno použiť so žiadnou metódou vo vnútri rozhrania.
- Od verzie Java 17 sa kľúčové slovo strictfp výslovne nevyžaduje, pretože všetky výrazy s pohyblivou rádovou čiarkou sú prísne hodnotené.
Príklad:
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 ()); } }
Výstup
1.006E11
výstup:
Nižšie vidíme výstup v konzole.