стрицтфп кључна реч у Јави
У Јави стрицтфп је модификатор који означава строги покретни зарез који није уведен у основну верзију Јаве као што је уведен у Јави верзији 1.2. Користи се у Јави за ограничавање израчунавања са помичним зарезом и за обезбеђивање истог резултата на свакој платформи док се извршавају операције у променљивој са покретним зарезом.
Калкулације са помичним зарезом зависе од платформе, тј. различити излазни подаци (вредности са покретним зарезом) се постижу када се датотека класе покрене на различитим платформама (16/32/64-битни процесори). Да би се решио овај тип проблема, кључна реч стрицтфп је уведена у верзију ЈДК 1.2 на следећи начин ИЕЕЕ 754 стандарди за прорачуне са покретним зарезом.
Напомена: стрицтфп модификатор се користи само са интерфејсима класа и методама, али није применљив на променљиве као што је илустровано у наставку:
Илустрација 1: Употреба кључних речи са класама
strictfp class Test {
// All concrete methods here are implicitly strictfp.
}Илустрација 2: Употреба кључних речи са интерфејсима
strictfp interface Test {
// All methods here becomes implicitly
// strictfp when used during inheritance.
}
class Car {
// strictfp applied on a concrete method
strictfp void calculateSpeed(){}
}Илустрација 3: Употреба кључних речи са методом Абстрацт у интерфејсу
strictfp interface Test {
double sum();
// Compile-time error here
strictfp double mul();
}Неки закључци се могу извући из горњих илустрација на следећи начин:
- Када је класа или интерфејс декларисан са стрицтфп модификатором, онда су све методе декларисане у класи/интерфејсу и сви угнежђени типови декларисани у класи имплицитно стрицтфп.
- стрицтфп не може користити са апстрактним методама. Међутим, може се користити са апстрактним класама/интерфејсима.
- Пошто су методе интерфејса имплицитно апстрактне, стрицтфп се не може користити ни са једном методом унутар интерфејса.
- Од верзије Јаве 17 кључна реч стрицтфп НИЈЕ експлицитно потребна јер се сви изрази с помичним зарезом стриктно процењују.
Пример:
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 ()); } }
Излаз
1.006E11
Излаз:
Испод можемо видети излаз у конзоли.