בית פורומים למתכנתים שבינינו

תגידו מה הסיפור של float?

שלום אורח. באפשרותך להתחבר או להירשם
הצג 15 הודעות בעמוד הוסף לדף האישי  דווח למנהל שלח לחבר
נשלח ב-4/10/2011 00:07 לינק ישיר 
תגידו מה הסיפור של float?

ניסיתי לקלוט מספר ממשי ולהציג אותו על המסך
עם decimal זה עובד יופי
float נותן לי ערך מקורב. למה?



using system;
using system.collections.generic;
using system.linq;
using system.text; namespace consoleapplicationfloat
{
   class program
   {
      static void main(string[] args)
      {
         decimal x = decimal.parse(console.readline());
         console.writeline(x);
         // עד כאן עובד יופי
         float y = float.parse(console.readline());
         console.writeline(y); 
         /* ברוב המקרים קיבלתי מספר שונה מזה שהכנסתי
         // הסברים יתקבלו בברכה
         // יש פה קטע קצר כדי להשהות את המסך  */
         console.writeline("press any key to continue ...");
         console.readline();
      }
   }
}

c# כמובן









תוקן על ידי ליד_הסנדק ב- 04/10/2011 00:32:40




דווח על תוכן פוגעני

סמל אישי
מנותק
נשלח ב-4/10/2011 09:04 לינק ישיר 

נראה לי שאתה יכול להכניס רק 7 ספרות לfloat.
אולי הכנסת יותר?



דדווח על תוכן פוגעני

סמל אישי
מנותק
נשלח ב-4/10/2011 09:06 לינק ישיר 

נסה להפוך אותו לstring



דדווח על תוכן פוגעני

סמל אישי
מנותק
נשלח ב-4/10/2011 19:44 לינק ישיר 

1. לא הכנסתי הרבה ספרות נהפוך הוא הכנסתי 1.236 וקיבלתי 1.2359999 או משהו כזה

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



דדווח על תוכן פוגעני

סמל אישי
מנותק
נשלח ב-4/10/2011 22:54 לינק ישיר 

float מדייק עד 5 ספרות אחרי הנקודה (או משהו כזה). יש אפשרות להגדיר שידייק עד פחות ספרות וכך הוא יעגל הצורה נורמלית יותר.



דדווח על תוכן פוגעני

סמל אישי
מנותק
נשלח ב-5/10/2011 09:01 לינק ישיר 

מה שקרה זה לא חוסר דיוק אלא שיבוש
הקלט היה מספר עם שתים עד שלוש ספרות אחרי הנקודה
והפלט היה מספר בערך מקורב עם יותר ספרות אחרי הנקודה
כמו בדוגמה שנתתי
קלט 2.36
פלט 2.35999996



דדווח על תוכן פוגעני

סמל אישי
מנותק
נשלח ב-6/10/2011 14:38 לינק ישיר 

לפי מה שאני מבינה, יתכן ואני טועה. בגלל הparse הוא כאילו ממיר את המספר לfloat וההמרה הזו גורמת לו לשיבוש. 

בעוד אם היית רושם: 

   
;()float y = console.readline 
זה היה מועיל. יתכן שלא.



דדווח על תוכן פוגעני

סמל אישי
מנותק
נשלח ב-7/10/2011 07:05 לינק ישיר 

הנה הסבר, http://msdn.microsoft.com/en-us/library/c151dt3s(v=vs.80).aspx



דדווח על תוכן פוגעני

מחובר
נשלח ב-9/10/2011 19:03 לינק ישיר 

תודה רבה

תקציר לא מילולי: float שומר את הנתונים בחזקה בינארית ולא לכל מספר שהוא חזקה שלילית של 10 דצימלי יש יצוג זהה בבסיס בינארי...



דדווח על תוכן פוגעני

סמל אישי
מנותק
נשלח ב-9/10/2011 19:17 לינק ישיר 

אלגברה בינארית.. טוב לדעת שזה גם קשור.. :(



דדווח על תוכן פוגעני

סמל אישי
מנותק
   
בית > פורומים > אינטרנט ומחשבים > למתכנתים שבינינו > תגידו מה הסיפור של float?
מנהל לחץ כאן לנעילת האשכול
הוסף לעמוד האישי  דווח למנהל שלח לחבר

bholext