logo

Float לעומת Double Java

ב-Java, Java.

ישנם שני סוגים של סוגי נתונים בנקודה צפה:

  • סוג נתונים לצוף
  • סוג נתונים כפול

שניהם, צף וכפול מייצגים את מספרי הנקודה הצפה המאחסנים את הערכים העשרוניים.

סוג נתונים בנקודה צפה ערכים גודל (סיביות)* דרישת אחסון (בתים) ערך ברירת מחדל דיוק ספרות עשרוניות טווח דיוק
לָצוּף IEEE 754 נקודה צפה 32 4 0.0f יחיד 6 ספרות עשרוניות 3.4e-038 עד 3.4e+038 נָמוּך
לְהַכפִּיל IEEE 754 נקודה צפה 64 8 0.0ד לְהַכפִּיל 15 ספרות עשרוניות 1.7e-308 עד 1.7e+308 גָבוֹהַ

* הסיביות בגודל כוללות את הדברים הבאים:

ביטים לָצוּף לְהַכפִּיל
סִימָן 1 1
מַעֲרִיך 8 אחד עשר
מַנטִיסָה 23 52

דיוק יחיד: זה מורכב מ אחד חתיכת סימן (S), שמונה סיביות מעריך (E), ו עשרים ושלוש פיסות מנטיס (M).

דיוק כפול: זה מורכב מ אחד חתיכת סימן (S), אחד עשר סיביות מעריך (E), ו חמישים ושתיים פיסות מנטיס (M).

איטרציה של רשימה ב-java
Float לעומת Double Java

סוג נתונים לצוף

זהו מספר נקודה צפה של 32 סיביות, דיוק יחיד IEEE 754 (סטנדרט לאריתמטיקה של נקודה צפה). זה אומר שהוא נותן דיוק של 6-7 ספרות עשרוניות. הוא משמש אם אנו רוצים להשתמש בזיכרון ביעילות מכיוון שהוא דורש פחות זיכרון בהשוואה לסוג נתונים כפול. כדי להגדיר ערך צף, עלינו להשתמש בסיומת f או F. ערך ברירת המחדל שלו הוא 0.0f. כברירת מחדל, מספרי צפים מטופלים ככפולים ב-Java.

לדוגמה, אם נגדיר מספר צף כ:

 float height = 167.7 

ההכרזה לעיל של משתנה צף נותנת את שגיאת ההידור. נוכל לתקן את השגיאה על ידי הוספת סיומת f או F.

 float height = 167.7f or float height = 167.7F 

סוג נתונים כפול

סוג הנתונים הכפול הוא מספר נקודה צפה IEEE 754 בעל דיוק כפול של 64 סיביות. זה אומר שהוא נותן דיוק של 15-16 ספרות עשרוניות. הוא צורך יותר זיכרון בהשוואה לסוג הנתונים הצפים. הוא משמש לאחסון ערכים עשרוניים. ערך ברירת המחדל שלו הוא 0.0d. זה אופציונלי להוסיף סיומת d או D. לדוגמה:

 double price = 987.90D or double price = 987.90d or double price = 987.90 

צף לעומת סוג נתונים כפול

סוג הנתונים הכפול מדויק יותר מסוג הנתונים הצפים. הטבלה הבאה מסכמת את ההבדלים בין סוגי נתונים צפים לסוגי נתונים כפולים.

בָּסִיס סוג נתונים לצוף סוג נתונים כפול
זיכרון זה כובש 4 בתים. זה כובש 8 בתים.
דיוק הדיוק שלו הוא נָמוּך . הדיוק שלו הוא גָבוֹהַ .
דיוק זה עוקב דיוק יחיד (6-7 ספרות עשרוניות). זה עוקב דיוק כפול (15-16 ספרות עשרוניות).
מילת מפתח בשימוש ה לָצוּף מילת מפתח משמשת להגדרת מספר צף. ה לְהַכפִּיל מילת מפתח משמשת להגדרת מספר דיוק כפול.
שיעור עטיפה כיתת העטיפה שלו היא java.lang.Float. כיתת העטיפה שלו היא java.lang.Double.
סוג נתונים ברירת מחדל Java לא משתמשת בו כמספר ברירת המחדל של הנקודה הצפה. זה בְּרִירַת מֶחדָל סוג נתונים עבור מספרי נקודה צפה.
אובדן נתונים יהיה ללא אובדן נתונים אם נמיר לצוף לכפול. יהיה אובדן נתונים אם נמיר כפול לצוף.
שימושים יש להשתמש בו היכן פחות דיוק נדרש ואחסון הוא אילוץ. הוא משמש איפה יותר דיוק נדרש וגם דורש דיוק רב יותר.
סִיוֹמֶת זה משתמש ו אוֹ ו בתור סיומת. חובה להוסיף סיומת אם אתה מצהיר על משתנה צף. זה משתמש ד אוֹ ד בתור סיומת. זה אופציונלי להוסיף סיומת אם אתה מצהיר על משתנה כפול.
יִצוּג 28.96f אוֹ 28.96F 12.5 אוֹ 12.5D אוֹ 12.5 ד'

קווי דמיון בין צף לסוג נתונים כפול

  • ניתן לייצג מספרים אמיתיים על ידי שני סוגי הנתונים.
  • גם סוגי הנתונים הצפים וגם סוגי הנתונים הכפולים אינם מדויקים, ומכאן שהם ערך משוער.

באיזה סוג נתונים של נקודה צפה ב-Java עלינו להשתמש?

כפול הוא יותר מדויק מאשר לצוף. לכן, אם נדרשת תוצאה מדויקת ומדויקת יותר השתמשו בכפול. סיבה נוספת להשתמש בכפול היא שאם המספר אינו מתאים לטווח שמציע הצוף אז השתמש בכפול. עלינו להשתמש ב-float אם יש לנו אילוץ זיכרון מכיוון שהוא תופס חצי מקום מאשר כפול.

אנו ממליצים לך להשתמש ב-Double Over Float אם אין מגבלת זיכרון וחלל וכאשר נדרש דיוק רב יותר. רצוי ללכת עם הציפה, אם הזיכרון מעורר דאגה, ואין צורך בתוצאה ב-16 ספרות עשרוניות מדויקות.

השניים הבאים תוכניות Java הראה בבירור את ההבדלים בין סוג נתונים צף לסוג נתונים כפול.

FloatDataTypeExample.java

 public class FloatDataTypeExample { public static void main(String args[]) { float x = 1.0f, y = 3.0f; //defining x and y as float float z = x / y; //divides x by y and stores the result in the variable z System.out.println('x/y = ' + z); //prints the result } } 

תְפוּקָה:

list.sort java
 x/y = 0.33333334 

DoubleDataTypeExample.java

 public class DoubleDataTypeExample { public static void main(String args[]) { double x = 1.0, y = 3.0; //defining x and y as double double z = x / y; //divides x by y and stores the result in the variable z System.out.println('x/y = ' + z); //prints the result } } 

תְפוּקָה:

 x/y = 0.3333333333333333 

דרך שתי הדוגמאות לעיל, ברור שסוג הנתונים הכפול דורש יותר זיכרון כדי לאחסן מספר בעל דיוק כפול וגם נותן את התוצאה המדויקת יותר עד 16 ספרות עשרוניות. בעוד שסוג הנתונים הצף לוקח פחות מקום לאחסון מספרים בעלי דיוק בודד והוא נותן תוצאות של עד 6 מקומות עשרוניים.