ทางแก้นอกจากจะปัดเศษตามข้างต้นแล้ว ยังมี
decimal
เมื่อต้องการค่าที่แม่นยำครับค่าปริยายของตำแหน่งทศนิยมอยู่ที่ 28 หลัก คือ
จะเห็นว่าเมื่อนำมาคำนวณ ความแม่นยำจะถอยกลับมาที่ 28 ตำแหน่ง ถ้าต้องการความละเอียดมากกว่านั้น
และการเปลี่ยนวิธีการปัดค่าตัวท้าย
ส่วน
fractions
เป็นการเก็บเศษส่วนที่เขียนได้ในรูปของจำนวนเต็มหารกัน (จำนวนตรรกยะ) วิธีใช้คือแม้ว่า
fractions
จะไม่สูญเสียความแม่นยำเลย แต่มันก็ไม่สามารถเก็บจำนวนอตรรกยะ (อย่างเช่น sqrt(2)
) ก็เลือกใช้เครื่องมือเหล่านี้ให้ถูกงานนะครับ
จริงๆ แล้วอธิบายไม่ถูกเท่าไหร่นะ ปัญหาของ IEEE754/854 คือมันอยู่ในระบบฐานสอง แต่โลกความเป็นจริงมันเป็นฐานสิบ ประเด็นที่เป็นปัญหามากๆ เช่นโลกการเงิน ความผิดพลาด "ตามกฎหมาย" จะถูกกำหนดให้เป็นฐานสิบ ้เช่น ภาษีคำนวณผิดพลา่ดได้ไม่เกิน 1 สตางค์ต่อใบเสร็จ อะไรแบบนั้น
ReplyDeleteการเก็บค่าทศนิยมทุกรูปแบบมีโอกาสสูญเสียความแม่นยำเสมอ เพราะพื้นที่เก็บมีจำกัดยิ่งเป็นจำนวนอตรรกยะเราก็ไม่สามารถเก็บค่าที่แม่นยำได้
ระบบฐานสิบมันทำให้ความสูญเสียที่เกิดขึ้น เป็นไปในรูปแบบที่เราเข้าใจมันได้