פורסם 2008 ביולי 2917 שנים do { rest*=10; cout<<rest<<endl; i=rest; cout<<i<<endl; } while(rest!=rest);זה הקוד (לפחות חלק ממנו)rest מוגדר כdoublei מוגדר כintיש לי מחיר - משתנה double בשם priceעשיתי ככה:int i = price;double rest = price-i;ככה שמה שנשאר לי בrest זה המחיר פחות החלק השלם שלו - המספר שאחרי הנקודהעכשיו כמו ששמתם לב בקוד הזה אני מכפיל את זה ב10 כל הזמן ומשווה את זה לi, כדי שבסופו של דבר יהיה לי בi את המספר שאחרי הנקודה בpriceעשיתי רק מספר אחד אחרי הנקודה, אני יודע שהתנאי עצירה אדיוטי, אבל עשיתי את זה בגלל שזה נכנס ללולאה אינסופית - במקור זה אמור להיות i!=restבכל מקרהההדפסה מראה לי שrest = 8 אחרי ההכפלה ב10אחרי זה מכניסים לi את הערך של rest ומדפיסים אותו - זה יוצא 7?!מישהו יכול לעזור לי?תודהאילנ.ב.זה מה שקורה כש price = 60.8ועכשיו כשהחלפתי את price לfloat כתוב לי שאחרי הנקודה זה 0.79999999...זה אמור להיות 0.8!=//
פורסם 2008 ביולי 2917 שנים יש כמה דברים שאתה צריך להבין לגבי floating point. הם לא מדוייקים.אתה רוצה לעגל את התוצאה למעלה, למטה או לפי השבר, לפני שאתה ממיר למספר שלם.i = floor(rest);ori = floor(rest + 0.5); // rounds rest
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.