เครื่องคิดเลข Windows แสดงผลลัพธ์ที่แปลก


5

ลองสิ่งนี้บน Windows

ขั้นตอน:

  1. เปิดเครื่องคิดเลขโดยตรงหรือโดยพิมพ์ calc ใน RUN
  2. จากนั้นพิมพ์ 4 และนำสแควร์รูท "sqrt"
  3. และอะไรก็ตามที่คุณได้รับ (คุณควรจะได้ 2!), substract 2 จากมัน

คำถามของฉันตอนนี้ถูกต้องแล้วใช่ไหม?


1
เป็นไปได้ที่ซ้ำกันของDo-s และ Don't-s สำหรับการคำนวณเลขทศนิยม?

อย่างไร? ไม่ได้รับคุณ

@ ไม่ จำกัด : นั่นเป็นสิ่งที่ผิดมาก sqrt: (R \ R ^ -) -> (R \ R ^ -) ฟังก์ชั่นคือฟังก์ชั่นนั่นคือกฎที่ทุกองค์ประกอบในโดเมนจะเชื่อมโยงองค์ประกอบเดียวในช่วง sqrt (4) คือ 2 และไม่มีอะไรอื่น อย่างไรก็ตามสมการ x ^ 2 = 4 มีรากที่สองคือ -2 และ 2 นั่นคือ + sqrt (4) และ -sqrt (4)
Andreas Rejbrand

@ ไม่ จำกัด : ใช่ซึ่งทำให้แย่ลง (และฉันเป็นนักคณิตศาสตร์) (ดีในการวิเคราะห์ที่ซับซ้อนบางครั้งพิจารณาฟังก์ชั่นหลายมูลค่า แต่ที่อยู่ไกลเกินกว่าการสนทนานี้ในคณิตศาสตร์ระดับประถมศึกษา (และคณิตศาสตร์ประยุกต์เกือบทั้งหมด), sqrt เท่ากับรากบวกของสมการกำลังสองที่สอดคล้องกัน)
Andreas Rejbrand

คำตอบ:


4

เป็นการดีที่ไม่ถูกต้อง แต่วิธีการแสดงจำนวนจุดลอยตัวในคอมพิวเตอร์จะส่งผลให้เกิดคำตอบที่ไม่คาดคิด

หากคุณดูค่าตัวเลขของคำตอบมันใกล้เคียงกับ 0 นั่นคือคำตอบที่คาดหวัง


โอเคขอบคุณ. แต่ทำไมข้อผิดพลาดดังกล่าวเกิดขึ้นและวิธีการหลีกเลี่ยงข้อผิดพลาดดังกล่าวในขณะที่การคำนวณในภาษาใด ๆ หรือการเขียนโปรแกรมที่เฉพาะเจาะจงสิ่งที่จำเป็นต้องมีการดูแล

1
ยกเว้นว่าคุณกำลังจะแสดงตัวเลขโดยใช้สัญลักษณ์ทางวิทยาศาสตร์เช่นเครื่องคิดเลขคุณอาจไม่สังเกตเห็นข้อผิดพลาดเล็ก ๆ นี้เมื่อเขียนรหัส แต่มันเป็นเหตุผลหนึ่งที่คุณไม่ควรทำการตรวจสอบระยะไกลเหมือนwhile (x != 0.0) x += floatingPointResult();อย่างwhile(x <= 0.0)อื่น

อืมม ... ฉันคิดว่าเครื่องคิดเลข Windows ใช้ตัวเลขจุดคงที่ 256 บิตตั้งแต่ Vista
Mircea Chirea

@iconiK ฉันไม่รู้ว่าสิ่งนี้เกี่ยวข้องกับอะไร โดยไม่คำนึงถึงความแม่นยำของตัวเลขจะมีข้อผิดพลาดในการปัดเศษเมื่อทำการคำนวณเลขทศนิยม ( โดยเฉพาะกับจำนวนอตรรกยะ)
พัฒนา

@ ก่อนหน้านี้จุดคงที่! = จุดลอยตัว จุดคงที่คือเลขคณิตที่แน่นอนและด้วยข้อมูล 256 บิตซึ่งไม่น่าเป็นไปได้อย่างมากที่คุณจะล้น แม้ว่าคุณจะทำเช่นนั้นมันอาจจะปัดเศษเป็นค่า 256- บิตที่ใกล้ที่สุดซึ่งเป็นรายการของตัวเลขที่ยาวมาก ๆ
Mircea Chirea

3

ไม่มันไม่ถูกต้องทางคณิตศาสตร์ 2-2 = 0 :)

การให้ Calc คือ -0.00000000000000000000001 ซึ่งหมายความว่าฟังก์ชัน sqrt ให้ผลตัวเลขใกล้เคียงกับ 2 แต่มีเศษส่วนเล็ก ๆ บางส่วนถูกปัดเศษเพื่อการแสดงผล เมื่อคุณลบ 2 คุณจะได้ตัวเลขที่ใกล้เคียงกับ 0 มาก แต่ไม่มาก

มันเป็นสิ่งประดิษฐ์ที่เก็บหมายเลขจุดลอยตัวในคอมพิวเตอร์ เครื่องคิดเลข (ไม่ใช่สัญลักษณ์) ทุกตัวจะมีปัญหาบางอย่างที่ให้ผลลัพธ์ที่ไม่ถูกต้องเช่นนั้น ตัวอย่างเช่นลอง (sqrt (pi)) ^ 2-pi ซึ่งควรเป็น 0 ฉันเพิ่งลองในเครื่องคิดเลขออนไลน์นี้และได้รับ -1.3691388027


ฉันได้ 0 ตรงกับสิ่งที่ปี่ ...
syockit

2

มันจะให้-8.1648465955514287168521180122928e-39

ซึ่งโดยทั่วไป = 0 ตามที่มี 10 ^ -39 ...


1
-1 มันผิดมาก sqrt: (R \ R ^ -) -> (R \ R ^ -) ฟังก์ชั่นคือฟังก์ชั่นนั่นคือกฎที่ทุกองค์ประกอบในโดเมนจะเชื่อมโยงองค์ประกอบเดียวในช่วง sqrt (4) คือ 2 และไม่มีอะไรอื่น อย่างไรก็ตามสมการ x ^ 2 = 4 มีรากที่สองคือ -2 และ 2 นั่นคือ + sqrt (4) และ -sqrt (4)
Andreas Rejbrand

1
ความจริงที่ว่าsqrt(4)= +2 และ -2 เกี่ยวข้องกับความไม่ถูกต้องของการคำนวณเลขทศนิยมอย่างไร คำตอบนั้นอาจเป็น -2 ไม่ได้อธิบายว่าทำไมคำตอบนั้นไม่แน่นอน 0 ฉันไม่เข้าใจความเกี่ยวข้องของคำตอบสุดท้ายของคุณ
Cody Grey

นอกจากนี้ความจริงที่ว่า x ^ 2 = c มีสองรากที่ไม่มีอะไรเกี่ยวข้องกับปัญหาในมือ ...
Andreas Rejbrand

@Code สีเทา: พูดดีมากยกเว้นความจริงที่ว่า sqrt (x) เป็นหนึ่งในค่าไม่ใช่สอง!
Andreas Rejbrand

@ Andreas: ใช่ฉันเห็นว่าคุณเพิ่งแสดงความคิดเห็น ฉันรู้ว่ามันฟังดูผิดสำหรับฉัน แต่ฉันไม่สามารถพูดออกมาได้เกือบจะเหมือนกับที่คุณทำ ฉันสนใจสิ่งที่เกี่ยวข้องกับคำตอบมากขึ้น
Cody Grey
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.