หน้าเว็บ

วันจันทร์ที่ 1 มิถุนายน พ.ศ. 2552

เพราะเหตุใดนำ 5.5 หักด้วย 5.4 แล้วไม่ได้เท่ากับ 0.1

          อาจจะยังไม่มีใครสงสัยในกรณีนี้เพราะไม่ได้สังเกต Open-mouthed smile ที่จริงแล้วมีตัวเลขมากมายจนไม่สามารถระบุได้หมดครับที่นำมาหักลบกลบกันแล้วไม่เท่ากับที่ควรเป็น เช่น

  • 10.9-10.8 แล้วไม่เท่ากับ 0.1
  • 5.5-5.4 แล้วไม่เท่ากับ 0.1
  • 4.3-4.2 แล้วไม่เท่ากับ 0.1
  • ฯลฯ

          ทดสอบได้อย่างไรว่าไม่เท่ากัน เพราะได้ทดลองคีย์ลงในเซลล์แล้วก็เห็นได้คำตอบเป็น 0.1 ซึ่งถูกต้องแล้ว ทดสอบง่าย ๆ ครับ ลองคีย์ตามนี้

  1. A1 กรอก 5.5
  2. A2 กรอก 5.4
  3. A3 คีย์ =A1-A2
  4. A4 คีย์ =A3=0.1 ==> คำตอบจะต้องได้ False

          เป็นการให้โปรแกรมตรวจสอบว่า 5.5 หักด้วย 5.4 แล้วเท่าักับ 0.1 หรือไม่ ถ้าเท่าจะได้ค่า True ถ้าไม่เท่าจะได้ค่า False ดังนั้นที่เห็นด้วยตาว่า 0.1 คงจะไม่ใช่เสียแล้ว

อ้อ...ใครได้ค่า True บอกด้วยครับ จะได้ซื้อเครื่องนั้นมาใช้ Rolling on the floor laughing

อ้าว...แล้วอย่างนี้จะเชื่อได้อย่างไรว่า Excel คำนวณถูกต้อง Thinking smile

          เรื่องความแม่นยำในการคำนวณไม่ต้องสงสัย Excel หรอกครับ เพราะ Excel เก่งกว่าที่คิดไว้มาก สำหรับกรณีที่ยกมานี้ สาเหตุที่ผลการคำนวณออกมาแล้วไม่เป็นไปตามที่เราหวังจะได้เห็น เกิดจากการแปลงเลขฐาน 10 ที่เราคีย์ลงไปให้เป็นเลขฐาน 2 (0 กับ 1) แล้วแปลงกลับเป็นเลขฐาน 10 เพื่อการแสดงผล แม้จะไม่ตรงเผง แต่จะผิดพลาดในหลักมาก ๆ เช่น หลักที่ 15 เป็นต้น จึงไม่กระทบกับการคำนวณที่ไม่ได้ต้องการความละเอียดขนาดนั้น Surprised smile

          จากตัวอย่าง 5.5-5.4 จะได้ 0.0999999999999996 (คีย์ตัวเลขในเซลล์ใด ๆ  =5.5-5.4 แล้วลากเมาส์ไปคลุม 5.5-5.4 จากนั้นกดแป้น F9 จะได้ตัวเลข 0.0999999999999996) ซึ่งไม่เท่ากับ 0.1

          จากผลต่างดังกล่าว ก็มีคนสงสัยต่อไปว่า หากต้องการทำให้ได้ 0.1 ตามที่ควรจะเป็นจะต้องทำอย่างไร เรื่องนี้ไม่ยากครับ

  1. ใช้ฟังก์ชั่น Round เข้ามาช่วย ลองคีย์ที่เซลล์ใด ๆ ใหม่เป็น
    =Round(5.5-5.4,2)=0.1
    สูตร Round เป็นสูตรการปัดเศษให้เหลือทศนิยม 2 ตำแหน่ง คราวนี้คำตอบต้องเป็น True อย่างแน่นอน Winking smile
  2. กำหนด Precision as displayed โดยเข้าเมนู Tools > Options > Calculation > Precision as displayed

การกำหนดเช่นนี้จะทำให้ค่าในเซลล์เหลือจุดทศนิยมเท่าที่เรากำหนด Format หรือนั่นก็คือเท่าที่มองเห็นด้วยตาแต่จะมีผลกระทบทั้งไฟล์ ดังนี้

  • หากค่านั้น ๆ เป็นค่าคงที่ จะถูกตัดทศนิยมให้เหลือเท่าที่มองเห็นในเซลล์อย่างถาวร
  • หากค่านั้น ๆ ได้จากสูตร จะสามารถปรับทศนิยมเพิ่มลดได้ตามต้องการซึ่งเหมือน Round ให้โดยอัตโนมัติ

การพิสูจน์ว่าหลังจากกำหนด Precision as displayed แล้ว 5.5-5.4 เท่ากับ 0.1 ให้ลองดังนี้ครับ

  1. A1 กรอก 5.5
  2. A2 กรอก 5.4
  3. A3 คีย์ =A1-A2
  4. กำหนด Format ให้เป็นทศนิยม 2 ตำแหน่ง
  5. A4 คีย์ =A3=0.1 ==> คำตอบจะต้องได้ True

ไม่มีความคิดเห็น: