谁能告诉我为什么输出如此奇怪?

时间:2014-09-08 01:22:44

标签: c

我希望我的输出

0----2----4----6----8----1----1----1----1

但我一直在

0----2----------------------------------

基本上我想从0到16计数,增量为0.4。这是我的代码:

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;
}

1 个答案:

答案 0 :(得分:1)

您的问题是由浮点精度引起的,并尝试在此处进行精确比较:

if (fmod(x,2.0) == 0)

要么使用整数,要么使用'epsilon'测试:

epsilon = 0.000001;
if (fabs(fmod(x,2.0)) < epsilon)