??? 9.90 - 10 = 0.0999674-
לזה אני קורא פיטצר הזויי , כאשר משתמשים ביכולת ה XSL של מוזילה (הכל מ 4 ) מתברר שפעולות חישוב המכילות מספרים עשורניים זה משהוא שאסור לסמוך עליו.
בשביל לגלות את פשוט תבצעו פעולת select לשתי שדות המכילים מספרים בעלי נקודה עשרונית.
פיספסתי קצת כנראה בתיעוד ורק בדיעבד גיליתי כי לאחר פעולות חישוב עלי לבצע format-string כלומר :
כאשר ה EXPRESSION הוא הפעולה החשבונית אותה אתם עושים. ותודה לעוץליגוץלי שהעלה לי את הרעיון.
לדוגמה EXPRESSION :
חמוד לא ?
לזה אני קורא פיטצר הזויי , כאשר משתמשים ביכולת ה XSL של מוזילה (הכל מ 4 ) מתברר שפעולות חישוב המכילות מספרים עשורניים זה משהוא שאסור לסמוך עליו.
בשביל לגלות את פשוט תבצעו פעולת select לשתי שדות המכילים מספרים בעלי נקודה עשרונית.
פיספסתי קצת כנראה בתיעוד ורק בדיעבד גיליתי כי לאחר פעולות חישוב עלי לבצע format-string כלומר :
<xsl:value-of select="format-number(EXPRESSION,'###,##0.######')">
כאשר ה EXPRESSION הוא הפעולה החשבונית אותה אתם עושים. ותודה לעוץליגוץלי שהעלה לי את הרעיון.
לדוגמה EXPRESSION :
- 1 div 2
- 1 div 3
- element_name - other_element_name


זה 9.9-10=0.0999 או 10-9.9=0.0999
השבמחקאם זה השני, אז זה ממש לא באג... כי ככה חישוב ב-floating point מתבצע אבל אם זה הראשון 0.1 במקום מינוס 0.1 אז זה רציני.
זה לא באג של מוזילה, זו הצורה שמעבד X86 עובד. אתה תראה אותה התוצאה גם בkhtml (קונקרור, ספארי, כרום) וגם באקספלורר. ואם תבצע את החישוב בC על מספרים מסוג float, תקבל אותה תוצאה.
השבמחקתצוגה בעיגול של 6 ספרות משמעותיות (עבור float), או 14 ספרות משמעותיות (עבור double) תפתור לך את הבעיה.
בוריס... תחפש בגוגל
השבמחקwhat every programmer should know about floating point arithmetic...
ותראה שאתה כ"מתכנת" צריך לדעת על זה...