วันนี้มีการพูดคุยเรื่องปัญหาการจัดการข้อมูล
ชนิด Floating-point ในภาษา JavaScript

ปัญหาคือ
การเปรียบเทียบค่า หลังจากทำการประมวลผลแล้ว ไม่ถูกต้องตามที่คาดหวัง
ยกตัวอย่างเช่น
0.1 + 0.2 น่าจะต้องเท่ากับ 0.3
แต่ที่เจอใน JavaScript กลับไม่ใช่ !!

แสดงตัวอย่างของปัญหาดังนี้

จะแก้ไขปัญหานี้อย่างไรดี ?

ลองไปอ่านเอกสารตัวนี้ดูกันก่อนไหม ? ยาวมาก ๆ

การแก้ไขปัญหาขั้นพื้นฐานใน JavaScript

จะมี function ของตัวแปรชนิดตัวเลขที่ใช้งาน 2 function คือ

  • toFixed()
  • toPrecision()

แต่ต้องระมัดระวังในการใช้งานด้วย
ทั้งค่าที่ใส่ใน parameter
กับผลที่ออกมาจะมีชนิดเป็น string จำเป็นต้องแปลงกลับมาด้วย

แต่ถ้าใช้งานจริง ๆ จัง ๆ แนะนำให้ไปใช้ libary จัดการดีกว่า

เหมือนการจัดการ datetime นิยมใช้งาน moment.js
ยกตัวอย่าง library การจัดการตัวเลยทั้ง Money และ Currency

หรืออีกหนึ่งแนวทาง คือการเก็บข้อมูลเป็นจำนวนเต็มไปเลย ยกตัวอย่างเช่น

  • 100.12345 จะทำการเก็บเป็น 10012345 ไปเลย

มี VDO อธิบายเรื่อง number ใน JavaScript ที่น่าสนใจ