פורסם 2011 בספטמבר 1014 שנים ערב טוב.אני כותב מחשבון (ב GTK+).אני רוצה לדעת איך באפשרותי לפעול עם מספרים גבוהים ומדוייקים, מספרים שלא נכנסים גם במשתנה long double .למשל, מספר עם שלוש-מאות ספרות לפני הנקודה ושלוש-מאות נוספים אחרי הנקודה.איך אני יכול ליצור מספר כזה, להפעיל עליו חישובים, והעיקר - להפוך אותו למחרוזת (כדי לצייר אותו על המסך).כמובן בעזרת אסמבלי...אשמח מאוד לעזרה בנושא.הערה: במחשבון עצמו יהיה גלילה למספרים, לכן אין לי מגבלה באורך המספר...תודה רבה על כל עזרה ושבוע טוב,יוסף אור
פורסם 2011 בספטמבר 1014 שנים יכול להיות שדרך מתוחכמת יותר אבל הדבר היחיד שאני חושב עליו זה לפרק את המספר לכמה מספרים ע"י מודול ובעצם להשתמש בכמה משתנים למספר אחר..
פורסם 2011 בספטמבר 1014 שנים אין פתרון קסם - צריך לפרק את המספר לחלקים כך שכל חלק יוכל להיכנס בתוך int (כלומר, כל מספר למעשה מיוצג ע"י מערך של int), ולהפעיל חישובים בצורה מתוחכמת. זה לא פשוט לממש את זה בעצמך, וצריך להתעסק עם הרבה מתמטיקה בשביל זה (זוכר איך מחברים וכופלים מספרים במאונך? אז ככה).יש כל מיני חבילות שיכולות לעזור לך לעשות את זה... ראה לדוגמה את הלינקים שבתשובות כאן.
פורסם 2011 בספטמבר 1014 שנים אם אתה יכול לעבור לכתוב ב ++Cהייתי יוצר אובייקט למספר שמורכב מאובייקטים של ספרות ואז כל העסק ממש פשוט, כל מה שאתה צריך לוודא זה שפעולה מסויימת עובדת נכון על 2 ספרות ואז אתה יכול ליצור מספרים הרבה יותר ארוכים בקלות.זה לא הכי יעיל אבל הכי פשוט.
פורסם 2011 בספטמבר 1014 שנים אין הבדל גדול בין כתיבה של דבר כזה ב-C (באמצעות struct והרבה פונקציות) וב-++C (באמצעות מחלקה). זה רק עניין של תחביר. עדיין צריך להתעסק עם המתמטיקה שמאחורי העניין, לדאוג להקצאות זכרון מתאימות וכו' (טוב, בעצם כאן יש יתרון קטן ל-++C כי אפשר להשתמש ב-vector).
פורסם 2011 בספטמבר 1114 שנים מחבר חשבתי על הרעיון של פתירת תרגילים כמו שהייתי עושה ביסודי, במאונך.אבל זה מאוד מסובך.בכל מקרה, חזון למועד. אפילו גלילה אין לי במחשבון, ובטח שעדיין אי אפשר להשתמש במחשבון (יש רק כפתורים שמציירים מספרים ואופרטורים, לא יותר מזה).תודה רבה על כל העזרה - אני אשמח כמובן לעוד עזרה, אתם פשוט תותחים :-)יוסף אור
פורסם 2011 בספטמבר 1214 שנים אני יודע שבג׳אווה יש מחלקה בשם BigDecimal שמטפלת בדיוק בבעיות מהסוג הזה.
פורסם 2011 בספטמבר 1214 שנים אכן, לשפות חדשות יותר יש ספריות סטנדרטיות נרחבות יותר, שכוללות דברים כאלה - BigDecimal בג'אווה, BigInteger ב-#C, ובפייתון יש פשוט long (שלא כמו בשפות אחרות, שבהן long פשוט מציין int גדול יותר).ל-C יש ספריה סטנדרטית די מינימליסטית בהשוואה להנ"ל (סביר להניח שזה נובע מכך שהיא שפה הרבה יותר ישנה). בשביל זה יש חבילות חיצוניות.
פורסם 2011 בספטמבר 2214 שנים מחבר הגעתי למסקנה שלא כדאי לי להשקיע זמן בחישובים עם מאות ספרות, בעיקר כי מצאתי את המספר הגבוה והנמוך ביותר איתו המשתנה double יכול לעבוד.הגבוה ביותר:179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000הנמוך ביותר:-179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000הרבה מאוד ספרות, יש לציין...זה כשהמשתנה הוא double (משום מה אני לא מצליח להשתמש טוב ב ling double).בכל מקרה, תודה על העזרה - מחשבון כבר יש לי (אם מישהו רוצה זה סתם 585 שורות ב GTK+...) :-)ערב טוב,יוסף אור
פורסם 2011 בספטמבר 2814 שנים שים לב ש-doubleים לא באמת עובדים ככה.קרא קצת בויקיפדיה על נקודה צפה (double ו-float הם מספרים מהסוג הזה):http://he.wikipedia.org/wiki/%D7%A0%D7%A7%D7%95%D7%93%D7%94_%D7%A6%D7%A4%D7%94למרות שאפשר לייצג מספרים מאוד גדולים באמצעות double, רמת הדיוק תהיה נמוכה. כלומר, לדוגמה אמנם אפשר לייצג את המספר 100000000000000000000000000000000000 ע"י double, אבל את 100000000000000000000000000000000001 אי אפשר, כי המספר יעוגל למטה ל-100000000000000000000000000000000000.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.