געגועים ל perl

חישובי מע"מ והתלבטויות לגבי מחיר תוכנית המנויים כאן באתר שלחו אותי לחפש מספרים שלמים שגם כשתוסיף להם מע"מ הם עדיין יישארו מספרים שלמים. סתם כי זה נוח לראות מספרים שלמים לפני ואחרי מע"מ. הבעיה שמחשבים (כמו אנשים) לא תמיד אוהבים את המע"מ.

לפני שנגיע למחשב בואו נסכים ש 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

ותמיד כדאי לזכור שמחשבים לא משקרים אבל לפעמים הם רואים דברים אחרת מכם.