תרגיל - גילוי סוגי נקודה צפה
- 8 דקות
בתרגיל זה, אתה עובד עם סוגי נתונים של נקודה צפה כדי ללמוד על ההבדלים הניואנסים בין כל סוג נתונים.
נקודה צפה היא סוג ערך פשוט המייצג מספרים משמאל למקום העשרוני. בניגוד למספרים אינטגרליים, ישנם שיקולים אחרים מעבר לערכי המקסימום והמינימום שניתן לאחסן בסוג נקודה צפה נתון.
הערכת סוגי נקודה צפה
ראשית, עליך לקחת בחשבון את ספרות הדיוק שכל סוג מאפשר. דיוק הוא מספר מקומות הערכים המאוחסנים לאחר הנקודה העשרונית.
שנית, עליך לקחת בחשבון את אופן אחסון הערכים ואת ההשפעה על דיוק הערך. לדוגמה, float וערכים double מאוחסנים באופן פנימי בתבנית בינארית (בסיס 2), בעוד שהם decimal מאוחסנים בתבנית עשרונית (בסיס 10). מדוע זה משנה?
ביצוע מתמטיקה על ערכי נקודה צפה בינאריים יכול להפיק תוצאות שעשויות להפתיע אותך אם אתה רגיל למתמטיקה עשרונית (בסיס 10). לעתים קרובות, מתמטיקה בינארית של נקודה צפה היא קירוב של הערך האמיתי. לכן, float והם double שימושיים מכיוון שניתן לאחסן מספרים גדולים באמצעות טביעת רגל קטנה של זיכרון. עם זאת, float ויש double להשתמש בו רק כאשר קירוב שימושי. לדוגמה, להיות במרחק של כמה אלפיות בעת חישוב התזת כדור שלג במשחק וידאו זה קרוב מספיק.
כאשר אתה זקוק לתשובה מדויקת יותר, עליך להשתמש ב decimal- . לכל ערך כתב יש טביעת רגל גדולה יחסית של decimal זיכרון, אולם ביצוע פעולות מתמטיות נותן לך תוצאה מדויקת יותר. לכן, עליך להשתמש decimal בעת עבודה עם נתונים פיננסיים או כל תרחיש שבו אתה זקוק לתוצאה מדויקת מחישוב.
השתמש במאפיינים MinValue ו- MaxValue עבור כל סוג צף חתום
מחק או השתמש באופרטור הוספת
//כדי להוסיף הערות לכל הקוד מהתרגילים הקודמים.כדי לראות את טווחי הערכים עבור סוגי הנתונים השונים, עדכן את הקוד שלך בעורך הקוד של Visual Studio באופן הבא:
Console.WriteLine("");
Console.WriteLine("Floating point types:");
Console.WriteLine($"float : {float.MinValue} to {float.MaxValue} (with ~6-9 digits of precision)");
Console.WriteLine($"double : {double.MinValue} to {double.MaxValue} (with ~15-17 digits of precision)");
Console.WriteLine($"decimal: {decimal.MinValue} to {decimal.MaxValue} (with 28-29 digits of precision)");
בתפריט קוד Visual Studio קובץ, בחר שמור.
יש Program.cs הקובץ לפני בנייה או הפעלה של הקוד.
בלוח EXPLORER, כדי לפתוח מסוף במיקום התיקיה TestProject, לחץ באמצעות לחצן העכבר הימני על TestProjectולאחר מכן בחר פתח במסוף משולב.
לוח מסוף אמור להיפתח, ועלי לכלול שורת פקודה המציגה שמסוף פתוח במיקום התיקיה TestProject שלך.
בשורת הפקודה Terminal, כדי להפעיל את הקוד, הקלד dotnet מכן הקש Enter.
אם אתה רואה הודעה המציינת "לא היתה אפשרות למצוא פרוייקט להפעלה", ודא ששורת הפקודה של המסוף מציגה את מיקום התיקיה הצפוי של TestProject. לדוגמה:
C:\Users\someuser\Desktop\csharpprojects\TestProject>אתה אמור לראות את הפלט הבא:
Floating point types: float : -3.402823E+38 to 3.402823E+38 (with ~6-9 digits of precision) double : -1.79769313486232E+308 to 1.79769313486232E+308 (with ~15-17 digits of precision) decimal: -79228162514264337593543950335 to 79228162514264337593543950335 (with 28-29 digits of precision)
כפי שאתה יכול לראות, float והשתמש double בסימון שונה מזה המשמש decimal לייצוג הערכים הגדולים והקטנים ביותר האפשריים שלו. אבל מה המשמעות של הסימון הזה?
פענוח ערכי נקודה צפה גדולים
מכיוון שסוגי נקודה צפה יכולים להכיל מספרים גדולים בדייקנות, ניתן לייצג את הערכים שלהם באמצעות "סימון E", שהוא סוג של סימון מדעי שפירושו "כפול 10 מורם בחזקת של". לכן, ערך כמו 5E+2 יהיה הערך 500 מכיוון שהוא שווה ערך ל-5 * 10^2, או 5 x 102.
סיכום
- סוג נקודה צפה הוא סוג נתונים של ערך פשוט שיכול להכיל מספרים חלקיים.
- בחירת סוג הנקודה הצפה הנכון עבור היישום שלך מחייבת אותך לשקול יותר מאשר רק את ערכי המקסימום והמינימום שהוא יכול להכיל. עליך גם לשקול כמה ערכים ניתן לשמור לאחר הנקודה העשרונית, כיצד המספרים מאוחסנים וכיצד האחסון הפנימי שלהם משפיע על התוצאה של פעולות מתמטיות.
- לפעמים ניתן לייצג ערכי נקודה צפה באמצעות "סימון E" כאשר המספרים גדלים במיוחד.
- יש הבדל מהותי באופן שבו המהדר וזמן הריצה מטפלים
decimalבניגוד לfloat- אוdouble, במיוחד כאשר קובעים כמה דיוק נחוץ מפעולות מתמטיות.