ในขณะที่วนซ้ำเกี่ยวข้องกับตัวเลขทศนิยม [ซ้ำกัน]

#include<stdio.h>
void main()
{
 float x=1.1;
 while(x==1.1)
 {
     printf("\n%f",x);
     x=x-0.1;
 }
}

ฉันได้เรียนรู้ว่า while loop อาจเกี่ยวข้องกับตัวเลขทศนิยมด้วย แต่โปรแกรมด้านบนไม่แสดงผลใด ๆ ทำไมจึงเป็นเช่นนั้น?


person Aksh    schedule 17.01.2018    source แหล่งที่มา
comment
คำแนะนำ: 1.1 คือ double ไม่ใช่ float ระวังการแปลงโดยนัย   -  person Carl Norum    schedule 17.01.2018
comment
== แทบไม่มีประโยชน์สำหรับประเภทจุดลอยตัว   -  person Christian Gibbons    schedule 17.01.2018
comment
@dbush: โปรดอย่าทำเครื่องหมายคำถามจุดลอยตัวซ้ำซ้อนกับคำถามนั้น . จุดลอยตัวมีคุณสมบัติและคุณลักษณะมากมายที่สามารถตั้งคำถามและตอบเป็นรายบุคคลได้ คำถามนี้มีซอร์สโค้ดที่เหมือนกับ คำถามนี้ ซึ่งเป็นต้นฉบับมากที่เหมาะสมกว่ามาก   -  person Eric Postpischil    schedule 18.01.2018
comment
สมมติว่าเลขคณิตจุดลอยตัวไบนารี IEEE 754 x เป็นการประมาณ 32 บิตที่ใกล้เคียงที่สุดกับ 1.1, 1.10000002384185791015625 1.1 เป็นการประมาณค่า 64 บิตที่ใกล้เคียงที่สุดกับ 1.1, 1.100000000000000088817841970012523233890533447265625 พวกเขาไม่เท่ากัน   -  person Patricia Shanahan    schedule 18.01.2018
comment
@EricPostpischil ไม่เพียงแต่ซอร์สโค้ดเท่านั้น แต่คำถามเองก็เหมือนกัน ดูเหมือนว่าโปสเตอร์ทั้งสองจะมีการบ้านเหมือนกัน   -  person Bob__    schedule 18.01.2018
comment
@Bob__: 1.1 ได้รับความนิยม: 1, 2, 3, 4   -  person Eric Postpischil    schedule 18.01.2018