我希望我的输出是
0----2----4----6----8----1----1----1----1
但我不断得到
0----2----------------------------------
基本上我想以 0.4 为增量从 0 数到 16。这是我的代码:
int
main(int argc, char *argv[]) {
double x;
for( x = 0.0; x<= 16.0; x = x + 0.4){
if( fmod(x,2.0) == 0){
if(x< 10){
printf("%.0f",x);
}
if(x >= 10){
printf("%.0f",x/10);
}
}
else{
putchar('-');
}
}
printf("\n");
return 0;
}
最佳答案
您的问题是由于浮点精度造成的,并尝试在此处进行精确比较:
if (fmod(x,2.0) == 0)
使用整数,或使用“epsilon”测试:
epsilon = 0.000001;
if (fabs(fmod(x,2.0)) < epsilon)
关于谁能告诉我为什么输出如此奇怪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25716274/