אבל | 04-12-02 10:00 בניה | #112 |
| איך מעגלים כלפי מעלה מספרים לא שלמים? למשל:
1.223123123 > 2, 24.67567 > 25...... |
|
עיגול מספרים | 04-12-02 10:02 אלי חן (מנהל) | #113 |
| באופן נורמלי, המרה ממספר עשרוני למספר שלם - עיגול כלפי האפס.
עיגול כלפי מעלה - הפונקציה ()ceil.
עיגול כלפי מטה - הפונקציה ()floor. |
|
מה עושה הE | 10-12-02 04:02 x1r0x | #461 |
| לא הבנתי מה הוא עושה
וגם לא הבנתי מה עושה הסלאש
echo"floor of $a is: "; |
|
תגובה: מה עושה הE | 10-12-02 06:00 אלי חן (מנהל) | #466 |
| הE מסמל חזקה בבסיס של 10. מה שמופיע אחרי הE הוא החזקה.
הסלאש שמופיע הוא כדי להבריח את התו דולר ($). |
|
לא הבנתי מה עושה | 01-11-02 15:00 [ללא שם] | #555 |
| בקוד שהבאת פה
echo floor($a
זאת השורה האחרונה של הקוד, למה היא משמשת?
הרי הבנתי ששתי השורות הראשונות יוצרות את הפלט
אבל מה עושה השורה השלישית? |
|
הדוגמא השניה | 01-11-02 15:02 אלי חן (מנהל) | #559 |
| הדוגמא השניה באה לתת דוגמא הממחישה את אי הדיוק המוחלט במחשבים. במשתנה $a אמורה להיות המספר 8. אבל המחשב לא מדוייק, והוא נשמר כ ...7.99999 ואילו הפונקציה floor מחזירה את הערך השלם התחתון של המספר. לכן הרצפה של ...7.99999 הוא 7. |
|
תגובה: לא הבנתי מה עושה | 02-11-02 19:02 OK | #619 |
| גם אני תלמיד אז תקנו אותי במידת הצורך:
השורה
(echo floor($a
בעצם מציגה את תוצאות החישוב (הערך) של המשתנה a$
echo מציגה את הבא אחריה (באותה שורת קוד, כלומר, עד הסימן ; )
(floor($a מעגלת את הערך של המשתנה a$ (שהוא כמובן ערך עם נקודה עשרונית) כלפי האפס (כפי שנאמר בהדעה של מנהל הפורום "עיגול מספרים)
וללא כל קשר לתוכן ההודעה: כל הכבוד למנהלי האתר!
בהחלט אתר מצויין! המשיכו כך! |
|
עזרה | 02-11-02 21:01 אנדרי | #621 |
| echo "floor of $a is: ";
לפי הקוד הזה איך אני יודע שבפלט דווקא במקום הרצוי תיהיה התוצאה שלי? |
|
הוצאת פלט | 02-11-02 22:00 אלי חן (מנהל) | #627 |
| הפלט עוצר בדיוק במקום שבו אתה עוצר אותו,
וממשיך בדיוק מאותו מקום שבו הוא נעצר בפעם האחרונה.
אין פה ממש מה להבין... |
|
אז איך אני עושה עיגול כלפי מעלה? | 02-12-03 00:01 יולו | #675 |
| כפי שאתה אמרת כדי לעשות עיגול כלפי מעלה אני הייתי צריך לעשות בקוד שלך ככה:
echo ceil($a);
? |
|
עיגול כלפי מעלה | 02-12-03 01:01 אלי חן (מנהל) | #678 |
| בדיוק.. עם הפונקציה ceil |
|
והנה דוגמא: | 04-12-03 06:01 יולו | #786 |
| הנה דוגמא למי שלא הבין עדיין:
<?php
$a=2.5;
echo ('$a is: ' .$a. "<br>");
echo ('ceil of $a is:' .ceil($a). "<br>");
echo ('floor of $a is:' .floor($a));
?>
אני שם את הערך 2.5 (מספר עשרוני) ל:
a$
אז אני קודם כל מציג לפלט את הערך שלו.
אח"כ אני משתמש בפונקציה ()ceil כדי להציג את העיגול כלפי מעלה של 2.5
ואח"כ אני משתמש בפונקציה ()floor כדי להציג את העיגול כלפי מטה..
עם הדוגמא הזאת תראו איך מעגלים גם כלפי מעלה וגם כלפי מטה.. וגם בטח יש כמה אנשים שלא הבינו שאפשר להציג את אותו משתנה בכמה צורות.. לדוגמא פעם אחת עם עיגול כלפי מעלה פעם אחת כלפי מטה.. וזה יראה בדיוק מה שביקשתם ולא יתן שגיאה שהשתמשתם במשתנה לכמה דברים ושאי אפשר כזה דבר..
מקווה שהבנתם, יולו. |
|
איך מתגברים על זה? | 09-12-03 03:00 רביד | #1099 |
| זה ממש bug רציני.
למיטב ידיעתי אין עוד שפות תכנות שיש בהן את הבעייה הזו.
איך אפשר לפתור את זה?
האם יש עוד דברים כאלו? |
|
זה לא באשמת PHP | 09-12-03 18:02 אלי חן (מנהל) | #1130 |
| הבאג הזה שאתה מתאר הוא לא באשמת PHP.. כך עובד המחשב, המעבד.. הוא אינו יכול לשמור בכמה בתים ערך מדוייק של כל מספר ושבר.. |
|
פשוט לא עשו את זה עדיין | 09-12-03 23:02 Shau | #1148 |
| אפשר בקלות ליצור סוג משתנה שיכיל מספרים בדיוק מושלם.
הרבה יותר נח ויעיל לבנות משהו כזה באסמבלי אבל עקרונית אפשר בכל שפת מחשב.
בקשר לphp אני לא בטוח, כי שפות אינטרנט עובדות ברמות הכי גבוהות מבין כל שפות התיכנות. |
|
באג מספרים אמיתיים | 31-10-03 01:00 ישראל | #1170 |
| מס'תומרת שהמחשב לא יכול לשמור את הערך המדויק, כ"כ קשה למחשב לשמור את המס' 8 ?
למה כמה בתים זה כבר דורש ?!
איפה הגבול בין התרגילים שאני יקבל תוצאות האמיתיות לתוצאות חורגות מהאמת ?
ס'תומרת איך אני יכול לדעת אם המשחב יתן/נותן לי תוצאה מדויקת או קצת חורג ?
אגב, בדקתי במחשבון (ב-windows XP) והתרגיל יצא 8 ב ד י ו ק ! אז אופו טמון הבעיה ??? |
|
שמירת מספרים במחשב | 31-10-03 17:01 אלי חן (מנהל) | #1205 |
| מחשב, כידוע, שומר ומעבד את המידע בצורה של ביטים. כל מספר עשרוני מיוצג במחשב כרצף ביטים. לא כל מספר עשרוני ניתן לייצג בצורה מדויקת ע"י מספר סופי של ביטים. כך למשל לפחות אחד הערכים של 0.1 או 0.7, שאינם מיוצגים במדויק אלא בקירוב ממש. כאשר מחברים 0.1 ו-0.7 במחשב, הוא עושה את החיבור על הביטים שלהם, ולכן אם לפחות אחד מן המחוברים אינו מיוצג במדויק, הרי שגם הסכום שלהם לא ייוצג במדויק. ואם נכפול ב-10, גם זה לא יוצג במדויק, ולכן מקבלים שערך הרצפה הוא 7 ולא 8 כמצופה. מחשב אינו יודע לחשב כמו בן-אדם, הוא פועל על ביטים ולא יודע מה משמעות המספר. |
|
שני חוסרים בהסבר - למתקדמים | 01-12-04 03:02 צביקה | #1368 |
| round - פונקציה המעגלת על פי קירוב ולא למעלה או למטה, כפי שציינו כאן כבעיה. הפונקציה מקבלת גם פרמטר דיוק לקירוב, כך שניתן לעגל לא רק למספר שלם אלא לכמה ספרות שרוצים אחרי הנקודה העשרונית, דבר שיכול לפתור בעצם את כל הבעיות שהתעוררו.
round(var, precision);
בנוסף, חשוב לציין כי כל פונקציות העיגול המוזכרות כאן מחזירות מספר ממשי ולא מספר שלם, ויש לבצע פעולה של השלכה למספר שלם כדי לקבל מספר שלם אמיתי אחרי ביצוע העיגול העשרוני.
בהצלחה
צביקה |
|
שאומרים לעגל כלפי האפס | 01-11-06 23:01 אברהם ססובר | #2726 |
| הכוונה היא לא תמיד לעגל למטה אלא נגיד יש לך מספר שלילי הוא יעוגל כלפי האפס, זאת אומרת יעוגל למעלה...
נכון? |
|
echo | 03-12-08 10:01 אביב אסבן | #2802 |
| בהתחלה חשבתי שה echo זה לפלט למסך אבל אני רואה שהתמשתם בפקודה גם לעוד אפשרות כמו לעגל מה התפקיד של echo |
|