Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

'เลขคณิตจุดลอยตัว' แม่นยำ 100% ใน JavaScript หรือไม่


เลขคณิตจุดลอยตัว จาวาสคริปต์ไม่ถูกต้อง 100% เสมอไป สำหรับสมมุติเอา 1/3 เช่น 0.33333..... ที่นี่ค่า 0.333.... จะปัดเศษที่จุดที่ไม่รู้จัก ดังนั้นหากเราบวกมันด้วยค่าอื่นซึ่งมีค่าเป็นทศนิยมด้วย เราจะไม่ได้ผลลัพธ์ที่ต้องการ ดังนั้นเราจึงสรุปได้ว่าเมื่อเพิ่มทศนิยมสองตำแหน่งแล้ว จะเกิดข้อผิดพลาดในการปัดเศษ แต่โชคดีที่ข้อผิดพลาดเหล่านั้นค่อนข้างเล็ก ทำให้ผลลัพธ์โค้ดจริงไม่ได้รับผลกระทบ

ในตัวอย่างต่อไปนี้ เมื่อเพิ่ม 0.3 ด้วย 0.6 ผลลัพธ์จะต้องเป็น 0.9 แต่เนื่องจากมี ข้อผิดพลาดในการปัดเศษ ค่าผลลัพธ์ไม่ใช่ค่าที่ต้องการตามที่แสดงในผลลัพธ์

ตัวอย่าง

<html>
<body>
   <p id="F-P-A"></p>
   <script>
      var err = 0.3 + 0.6;
         document.getElementById("F-P-A").innerHTML = "0.3 + 0.6 = " + err;
   </script>
</body>
</html>

ผลลัพธ์

0.3 + 0.6 = 0.8999999999999999


ในตัวอย่างต่อไปนี้ เมื่อเพิ่ม 0.2 และ 0.1 ผลลัพธ์ที่ต้องการคือ 0.3 แต่เนื่องจากปัดเศษ ข้อผิดพลาด , ค่าที่ตั้งใจไว้ไม่ใช่ค่าผลลัพธ์

ตัวอย่าง

<html>
<body>
   <p id="F-P-A"></p>
   <script>
      var err = 0.2 + 0.1;
      document.getElementById("F-P-A").innerHTML = "0.2 + 0.1 = " + err;
   </script>
</body>
</html>

ผลลัพธ์

0.2 + 0.1 = 0.30000000000000004