循环为什么不停止? (请帮忙) [英] Why the loop doesn't stop ? (please help)
本文介绍了循环为什么不停止? (请帮忙)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
#include <stdio.h>
int main(void){
double a = 3.0, b = 3.4;
while(a != b){
puts("Not Equal.");
a = a + 0.1;
}
puts("Now Equal");
getchar();
return 0;
}
//如果b = 3.1或3.2,它的效果非常好。
我尝试了什么:
请帮帮我...不明白..... ..
// If b = 3.1 or 3.2 it works perfectly.
What I have tried:
Please Help Me Out... Can't understand.......
推荐答案
Quote:
为什么循环不会停止?
因为浮点运算不精确。
0.1只是近似值,所以3.0 + 0.1 + 0.1 + 0.1 + 0.1不是3.4,有一个漂移。
浮点运算 - 维基百科 [ ^ ]
欢迎来到浮点! />
请参阅:
每个计算机科学家应该知道浮点运算 [ ^ ]。
浮点指南 - 比较 [ ^ ]。
Welcome to floating point!
See:
What Every Computer Scientist Should Know About Floating-Point Arithmetic[^].
The Floating-Point Guide - Comparison[^].
为什么你不使用调试器,或做出类似的输出?
Why arent you use the debugger, or made some output like that?
while(a != b){
puts("Not Equal.");
a = a + 0.1;
printf("a = %f", a);
}
你会看到它:-O
这篇关于循环为什么不停止? (请帮忙)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文