floating Error

ผมเจอตัวอย่าง Error นี้ทาง internet ครับซึ่งโดยส่วนตัวแล้วผมยังงงๆ   อยู่แต่ก็พอเจ้าใจได้ว่าเป็นเรื่องของการ ปัดเศษ  ก็เลยเอามาเขียนในหัวข้อนี้ เพื่อที่จะได้คอยระวังว่า JavaScript เองเขาก็มี Bug หรือข้อผิดพลาดบ้างเหมือนกันครับ  เรามาลองดูตัวอย่างด้านล่างกันครับ

ตัวอย่าง

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
        var f1 = 0.2;
        var f2 = 0.1;

        if (f1 + f2 == 0.3) //Miss! -_-
        {
            alert('true');
        } else {
            alert('false');
        }
    </script>
</head>
<body>
Error
</body>
</html>

ดูแล้วไม่น่าจะมีอะไรนะครับ แต่ผลลัพธ์นี้สิครับมันไม่ถูกมันออกเป็น false ทุกครั้งเลยแต่ก็ลอง alert ค่าดูแล้วพบว่าค่าที่ได้มันเป็นตามด้านล่างครับ

    <script type="text/javascript">
        var f1 = 0.2;
        var f2 = 0.1;    
        alert(f1 + f2); //ค้าที่ได้คือ  0.30000000000000004
    </script>

ผมก็เลยเขียน บทตวามนี้ไว้เตือนความจำว่ามันมีอะไรแบบนี้อยู่เพราะถ้าเกิดปัญหาอย่างเช่น เกิดการคำนวนผิดพลาดแล้วเรามองข้ามจุดนี้ไปหรือไม่เข้าใจว่ามันมีแบบนี้อยู่

Leave a Reply