געגועים ל perl
18/05/2018
חישובי מע"מ והתלבטויות לגבי מחיר תוכנית המנויים כאן באתר שלחו אותי לחפש מספרים שלמים שגם כשתוסיף להם מע"מ הם עדיין יישארו מספרים שלמים. סתם כי זה נוח לראות מספרים שלמים לפני ואחרי מע"מ. הבעיה שמחשבים (כמו אנשים) לא תמיד אוהבים את המע"מ.
לפני שנגיע למחשב בואו נסכים ש 17% מע"מ ממחיר של 300 ש"ח נותן 51 ש"ח. במספרים זה ייצא 300 כפול 17 חלקי 100, האפסים יורדים ונשארנו עם 3 כפול 17 כלומר 51.
אבל מה שברור לכם לא תמיד ברור למחשב. כך פייתון:
>>> 300 * 0.17
51.00000000000001
ורובי:
2.3.1 :001 > 300 * 0.17
=> 51.00000000000001
ואפילו JavaScript:
> 300 * 0.17
51.00000000000001
ורק פרל הישנה היתה מספיק חכמה לתת תשובה נכונה:
$ 300 * 0.17
51
הסיבה קשורה לאופן שבו השפות האלה מייצגות מספרים ואפשר לקרוא על הסברים לרוב על התופעה בקישור: http://floating-point-gui.de
ותמיד כדאי לזכור שמחשבים לא משקרים אבל לפעמים הם רואים דברים אחרת מכם.