ลองสิ่งนี้บน Windows
ขั้นตอน:
- เปิดเครื่องคิดเลขโดยตรงหรือโดยพิมพ์ calc ใน RUN
- จากนั้นพิมพ์ 4 และนำสแควร์รูท "sqrt"
- และอะไรก็ตามที่คุณได้รับ (คุณควรจะได้ 2!), substract 2 จากมัน
คำถามของฉันตอนนี้ถูกต้องแล้วใช่ไหม?
ลองสิ่งนี้บน Windows
ขั้นตอน:
คำถามของฉันตอนนี้ถูกต้องแล้วใช่ไหม?
คำตอบ:
เป็นการดีที่ไม่ถูกต้อง แต่วิธีการแสดงจำนวนจุดลอยตัวในคอมพิวเตอร์จะส่งผลให้เกิดคำตอบที่ไม่คาดคิด
หากคุณดูค่าตัวเลขของคำตอบมันใกล้เคียงกับ 0 นั่นคือคำตอบที่คาดหวัง
while (x != 0.0) x += floatingPointResult();
อย่างwhile(x <= 0.0)
อื่น
ไม่มันไม่ถูกต้องทางคณิตศาสตร์ 2-2 = 0 :)
การให้ Calc คือ -0.00000000000000000000001 ซึ่งหมายความว่าฟังก์ชัน sqrt ให้ผลตัวเลขใกล้เคียงกับ 2 แต่มีเศษส่วนเล็ก ๆ บางส่วนถูกปัดเศษเพื่อการแสดงผล เมื่อคุณลบ 2 คุณจะได้ตัวเลขที่ใกล้เคียงกับ 0 มาก แต่ไม่มาก
มันเป็นสิ่งประดิษฐ์ที่เก็บหมายเลขจุดลอยตัวในคอมพิวเตอร์ เครื่องคิดเลข (ไม่ใช่สัญลักษณ์) ทุกตัวจะมีปัญหาบางอย่างที่ให้ผลลัพธ์ที่ไม่ถูกต้องเช่นนั้น ตัวอย่างเช่นลอง (sqrt (pi)) ^ 2-pi ซึ่งควรเป็น 0 ฉันเพิ่งลองในเครื่องคิดเลขออนไลน์นี้และได้รับ -1.3691388027
มันจะให้-8.1648465955514287168521180122928e-39
ซึ่งโดยทั่วไป = 0 ตามที่มี 10 ^ -39 ...
sqrt(4)
= +2 และ -2 เกี่ยวข้องกับความไม่ถูกต้องของการคำนวณเลขทศนิยมอย่างไร คำตอบนั้นอาจเป็น -2 ไม่ได้อธิบายว่าทำไมคำตอบนั้นไม่แน่นอน 0 ฉันไม่เข้าใจความเกี่ยวข้องของคำตอบสุดท้ายของคุณ