ABA


"שאלה ב-Java, איך אפשר להציג מספר עשרוני אינסופי"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10703 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10703
MrSus
חבר מתאריך 8.5.09
1801 הודעות
   17:57   19.05.12   
אל הפורום  
  שאלה ב-Java, איך אפשר להציג מספר עשרוני אינסופי  
 
   אני לא מדבר על מספרים אי-רציונליים, אלא על מספרים שיש להם מחזור מסוים. כדוגמת 1/7 (שביעית).

האם יש איזו פונקציה שמאפשרת להציג את השבר הזה בתור מספר עשרוני עד ספרה שאני אקבע לו? איך בכלל ג'אווה, ושפות תיכנות אחרות, מחשבות שברים כאלה?


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אתה מתכוון למספר רציונלי ldan192  19.05.12 22:15 1
     אכן מספר רציונלי MrSus 20.05.12 00:41 2
         לא רואה סיבה למה זה מגביל ldan192  22.05.12 00:24 12
             מממממ... MrSus 22.05.12 01:02 13
  אם לא ממש אכפת לך מביצועים,אתה יכול לבנות משהו רקורסיבי Ice Cold  20.05.12 11:28 3
     מה ז''א ? MrSus 20.05.12 14:36 4
         השאלה אם אתה מדבר פה על מספרים ראציונאלים או גם אי רציו eminem 20.05.12 18:04 5
             חיובי MrSus 20.05.12 18:15 6
                 מה שהצעתי זה משהו כזה: Ice Cold  21.05.12 02:11 7
                     וואלה מעניין ומגניב MrSus 21.05.12 10:28 8
                         זהו שאני לא ממש מבין ב-TYPES וכו' ומעולם לא נדרשתי Ice Cold  21.05.12 12:22 9
                             פשוט תשמור את זה בתור Linked LIST CaTz 21.05.12 23:33 10
                                 וואלה נשמע ממש מעניין MrSus 21.05.12 23:59 11
                                     אני גם לא חושב שצריך פה רשימה מקושרת, מספיק מערך eminem 22.05.12 11:58 14
                                         אבל מערך אתה יכול להשתמש רק אם אתה יודע לחסום CaTz 22.05.12 22:39 15
                                             גם למערך אפשר לעשות resize ldan192  22.05.12 22:49 16

       
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   22:15   19.05.12   
אל הפורום  
  1. אתה מתכוון למספר רציונלי  
בתגובה להודעה מספר 0
 
http://introcs.cs.princeton.edu/java/92symbolic/Rational.java.html

ואין טיפוס פרמיטיבי כזה ב-Java או ++C


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MrSus
חבר מתאריך 8.5.09
1801 הודעות
   00:41   20.05.12   
אל הפורום  
  2. אכן מספר רציונלי  
בתגובה להודעה מספר 1
 
   אבל לא סתם מספר רציונלי, מספר רציונלי עם מחזור (אינסופי).
למרות שתאכלס אפשר להסתכל על כל מספר רציונלי כעל מספר אינסופי, כשהמחזור הוא פשוט 0.. אבל אני מחפש בפרט להציג מספרים עם מחזור שאינו 0, כך שאוכל לקבוע עד לאיזה ספרה להציג את המספר.

מה שהבאת לי לא עוזר כ"כ.. הוא גם מגביל את מספר הספרות שהוא מציג.
באותה מידה אני יכול להשתמש ב double ..

... או שלא השתמשתי באובייקט בצורה נכון?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   00:24   22.05.12   
אל הפורום  
  12. לא רואה סיבה למה זה מגביל  
בתגובה להודעה מספר 2
 
ברגע שאתה כופל רציונלי ב-double אתה כמובן מגביל את עצמך,
אבל ע"י הגדרת אופרטור רציונלי * רציונלי אתה מקבל רציוני (למרות שגם אז אתה מוגבל, אין מה לעשות, למחשב יש זכרון סופי בכל זאת).

אם אתה באמת שואף לממש משהו מדוייק מאוד אז בהחלט linked list יכול לעשות את העבודה, העניין הוא שמה קורה כשיש מחזורים מאוד ארוכים למספר (ניתן למצוא אותם נומרית), או מה קורה כשאין מחזור בכלל? (למשל רצף הספרות אחרי הנקודות זה רצף המספרים הראשוניים (135711131719....)
גם linked list יכול לפוצץ את הזכרון


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MrSus
חבר מתאריך 8.5.09
1801 הודעות
   01:02   22.05.12   
אל הפורום  
  13. מממממ...  
בתגובה להודעה מספר 12
 
   אם אין מחזור אז זה כבר לא מספר רציונלי.. לכל מספר רציונלי יש מחזור עד כמה שידוע לי, אחרת הספרות שלו אחרי הנקודה נמשכות לאינסוף ואף פעם לא מתחילות לחזור על עצמן באופן קבוע, לא מצליח לחשוב על מספר רציונלי כזה. יש לך דוגמא למספר כזה בצורת שבר, שכשכותבים אותו בצורה עשרונית, אין לו מחזור?

ואני פשוט חיפשתי דרכים אחרות, לאו דווקא לשמור את זה במשתנה פרימיטיבי כלשהו. אפשר למשל לשמור אותו בצורת סטרינג ולהגדיר מחלקה שתדע לבצע עליו חישובים (בדומה לכפל ארוך למשל - ספרה ספרה).

ואגב, איך מוצאים מחזור של מספר ?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק
   11:28   20.05.12   
אל הפורום  
  3. אם לא ממש אכפת לך מביצועים,אתה יכול לבנות משהו רקורסיבי  
בתגובה להודעה מספר 0
 
שיעשה את זה, לבנות את המספר שלך תוך כדי בדיקה שכל ספרה עשרונית לא עובדת את המספר השלם שממנו התחלת.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MrSus
חבר מתאריך 8.5.09
1801 הודעות
   14:36   20.05.12   
אל הפורום  
  4. מה ז''א ?  
בתגובה להודעה מספר 3
 
   לא מבין כ"כ מה אתם מציעים פה..

המספר שביעית, שלקחתי בתור דוגמא, מיוצג בצורה עשרונית כך:
0.142857142857142857142857

אפשר לראות שהמחזור פה הוא 142857.

הטיפוסים הפרימיטיביים בג'אווה שמטפלים במספרים עשרוניים מציגים את המספר הזה עד הספרה ה-17 שלו , או פשוט כגודל המקום בזיכרון ש double מאכלס (תסלחו לי אם שכחתי כמה זה).

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

האם אפשרי?

היעילות לא חשובה לי, אפשר לומר שאפילו בכלל לא, מבחינתי שהקוד ירוץ דקה אפילו (אבל ברור שזה לא יקרה..)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק
   18:04   20.05.12   
אל הפורום  
  5. השאלה אם אתה מדבר פה על מספרים ראציונאלים או גם אי רציו  
בתגובה להודעה מספר 4
 
   רציונאלים
כלומר אם המספר רציונאלי וקיים מחזור הצג 50 ספרות?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MrSus
חבר מתאריך 8.5.09
1801 הודעות
   18:15   20.05.12   
אל הפורום  
  6. חיובי  
בתגובה להודעה מספר 5
 
   כפי שציינתי בהודעה הראשית, אני לא מדבר על מספרים אי-רציונליים.

רק מספרים רציונליים, ולצורך העניין זה לא משנה אם קיים מחזור או לא קיים מחזור. בכל מקרה אני ארצה שהוא יציג את 50 הספרות הראשונות. רק שכמובן זה לא ייתן לי כלום אם המחזור קטן מ-50..

הייתי רוצה פתרון ל-50 ספרות שאוכל לשחק איתו ולקבוע את מספר הספרות שהוא יציג.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק
   02:11   21.05.12   
אל הפורום  
  7. מה שהצעתי זה משהו כזה:  
בתגובה להודעה מספר 6
 
נגיד אתה רוצה 1/7:

אתה מקבל 0.142857 בהתחלה. ואז בצורה רקורסיבית אתה מוסיף עוד ספרה עשרונית. למשל 0.1428571 ומכפיל ב-7 קיבלת פחות מ-1? מעביר ל-0.1428572 וכו'. קיבלת יותר מ-1? מוסיף עוד ספרה עשרונית (0.14285711) עד שתשיג כמה ספרות שאתה רוצה בעצם...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MrSus
חבר מתאריך 8.5.09
1801 הודעות
   10:28   21.05.12   
אל הפורום  
  8. וואלה מעניין ומגניב  
בתגובה להודעה מספר 7
 
   לא חשבתי על דבר כזה.
נראה לי פתרון מצוין, אני אנסה ואראה לאן זה הולך.

אבל בעיה אחת שנראה לי שתעלה זה שכמו שאמרתי double לא יכול להחזיק אינסוף ספרות. אפילו 50 ספרות זה כבר הרבה מידי, על אחת כמה וכמה לבצע עליו פעולות כפל.. אבל אני אנסה ואראה איך Java מתמודד עם זה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק
   12:22   21.05.12   
אל הפורום  
  9. זהו שאני לא ממש מבין ב-TYPES וכו' ומעולם לא נדרשתי  
בתגובה להודעה מספר 8
 
לעשות משהו כמו שאתה מציין. סתם משהו שעלה לי לראש

כמובן שאתה יכול להתחיל מ-5 ולא מ-1 ואז לשפר ביצועים.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות
   23:33   21.05.12   
אל הפורום  
  10. פשוט תשמור את זה בתור Linked LIST  
בתגובה להודעה מספר 9
 
   או משהו כזה, וככה אתה יכול לייצג מספר בלי סוף בעקרון,

הייתה לנו עבודה בלימודים שהייתי צריכים בדיוק את זה, אבל באסמבלר, אז מימשנו LINKED LIST, וככה כל חוליה החזיקה, byte במקרה שלנו, ומצביע לספרה הבאה.

בJAVA אפשרי לעשות את זה הרבה יותר ענקי, ככה שכל חוליקה תחזיק INT, שזה 4 Byte.

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MrSus
חבר מתאריך 8.5.09
1801 הודעות
   23:59   21.05.12   
אל הפורום  
  11. וואלה נשמע ממש מעניין  
בתגובה להודעה מספר 10
 
   אבל עדיין לא ברמה שלי הנושאים האלה.

בכל מקרה פתחת לי את התאבון , אני אתחיל לקרוא קצת חומר על הנושא..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק
   11:58   22.05.12   
אל הפורום  
  14. אני גם לא חושב שצריך פה רשימה מקושרת, מספיק מערך  
בתגובה להודעה מספר 11
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות
   22:39   22.05.12   
אל הפורום  
  15. אבל מערך אתה יכול להשתמש רק אם אתה יודע לחסום  
בתגובה להודעה מספר 14
 
   את כמות המספרים העשרוניים, (כלומר גודל קבוע)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   22:49   22.05.12   
אל הפורום  
  16. גם למערך אפשר לעשות resize  
בתגובה להודעה מספר 15
 
הדרך הכי אולי סבירה (שלדעתי משתמשים בה באקדמיה) זה למצוא פולינום שמתאר את הספרות בסדרה / הפתרון.. וגם אז זה לא מובטח


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net