ב-Java ה strictfp הוא שינוי המייצג strict float-point אשר לא הוצג בגרסת הבסיס של Java כפי שהוצגה בגרסה 1.2 של Java. הוא משמש ב-Java להגבלת חישובי נקודה צפה והבטחת תוצאה זהה בכל פלטפורמה תוך ביצוע פעולות במשתנה הנקודה הצפה.
חישובי נקודה צפה הם תלויי פלטפורמה, כלומר פלט שונה (ערכי נקודה צפה) מושג כאשר קובץ מחלקה מופעל על פלטפורמות שונות (מעבדי 16/32/64 סיביות). כדי לפתור בעיה מסוג זה, מילת המפתח strictfp הוצגה בגרסת JDK 1.2 על ידי הבא IEEE 754 תקנים לחישובי נקודה צפה.
פֶּתֶק: strictfp modifier משמש עם ממשקים ושיטות של מחלקות בלבד, אך אינו ישים ליישום עם משתנים כפי שמוצג להלן:
מיזוג מיון java
איור 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();
}
ניתן להסיק כמה מסקנות מהאיורים לעיל כדלקמן:
- כאשר מחלקה או ממשק מוכרזת עם strictfp modifier אז כל השיטות המוצהרות במחלקה/ממשק וכל הסוגים המקוננים שהוכרזו במחלקה הן באופן מרומז strictfp.
- strictfp לא יכול לשמש בשיטות מופשטות. עם זאת ניתן להשתמש בו עם מחלקות/ממשקים מופשטים.
- מכיוון ששיטות של ממשק הן מופשטות באופן מרומז, לא ניתן להשתמש ב-strictfp עם כל שיטה בתוך ממשק.
- מגירסת Java 17 מילת מפתח strictfp אינה נדרשת במפורש מכיוון שכל ביטויי הנקודה הצפה מוערכים בקפדנות.
דוּגמָה:
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()); } }
תְפוּקָה
1.006E11
תְפוּקָה:
jsp
להלן נוכל לראות את הפלט בקונסולה.