ขอถามเรื่อง Excel หน่อยครับ

ผมผูกสูตรตามในรูป โดยให้เซลล่างเท่ากับเซลบน+0.1
ทำไม -1.000000+0.1 ถึงเท่ากับ -0.900000000100000...
และทำไม -0.100000000001+0.1 เท่ากับ 0.00000000102695...
ขอบคุณครับ

คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 3
เพราะตัวเลขทศนิยมใน excel  มันไม่ได้คำนวณเป็นฐานสิบ  แต่เป็นทศนิยมฐานสองครับ

ในซอฟแวร์ Excel
1. ถ้าเอา -1 บวกทีละ 0.01
2. บังคับ Format Cell แสดงทศนิยมหลาย ๆ หลัก

เครื่องผมพอถึงครั้งที่ 57 มันจะกลายเป็น -0.429'999'999'999'000'000
ครั้งที่ 99 จะได้ -0.009'999'999'999'999'250'000
ครั้งที่ 100 จะได้ 0.000'000'000'000'000'752'869'988'573'934'00
ครั้งที่ 101 จะได้ 0.010'000'000'000'000'800'000'000'000'000'00

สาเหตุเป็นเพราะทศนิยมฐานสิบบางตัว  สามารถเขียนในทศนิยมฐานสองได้เป็นการประมาณเท่านั้น
และเมื่อเราคำนวณหลาย ๆ ทบเข้าแบบนี้   ความคลาดเคลื่อนเกิดขึ้นได้ครับ

แต่จขกท. ลองลด Format ทศนิยมให้เหลือ 14 หลัก
หรือมี mantissa จำนวน 15 ตำแหน่งนัยสำคัญ
ทันใดนั้นความวุ่นวายทั้งหลายจะหายวับไปทันที

เพราะอะไร?

เพราะเกิดจากการปัดเศษทศนิยมตำแหน่งที่ 15

เพราะมาตรฐานการคำนวณทศนิยมฐานสองของ IEEE 754
กำหนดให้ double precision ใช้จำนวนบิต 64 บิต
ผลคือมีความแม่นยำในการแปลงไปกลับจากฐานสิบเป็นจำนวนหลักนัยสำคัญ 15 mantissa (mantissa หลักต่อ ๆ มาจะไม่เหมือนต้นฉบับ)

และ Excel ใช้ double precision ในการคำนวณครับ

พูดอีกนัยหนึ่ง Excel หรือโปรแกรมอื่นใดที่คำนวณทศนิยมเป็น double precision
เมื่อไหร่ที่ใช้คำนวณเงินในหลักสิบล้านล้าน 10,000,000,000,000.00
อาจจะมีการคลาดเคลื่อนในหลักหน่วยของเซนต์หรือสตางค์ + 0.01
ยังไงลองดูเล่น ๆ ครับ
[LIVE]

learn more =>  [Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่