负双零不等于零?

时间:2016-10-29 19:14:55

标签: c double equality zero

我有一个双output,正在打印为-0.000000

我有一个循环说:

if (output == 0) {
    printf("Continuing to go STRAIGHT.\n");
}
else if (output > 0) {
    printf("Turning LEFT.\n");
}
else if (output < 0) {
    printf("Turning RIGHT.\n");
}

这样可以保持打印第三个条件,说-0.000000小于0.为什么会这样,我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:5)

这是因为内存中的双重表示不准确。 例如,output可以等于-0.000000000000012,但printf仅打印第一个数字。 您可以尝试printf("%.20lf", output);打印更多数字。

但是,使用带有浮点的运算符==并不是一个好习惯。