我有一个双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.为什么会这样,我该如何解决这个问题呢?
答案 0 :(得分:5)
这是因为内存中的双重表示不准确。
例如,output
可以等于-0.000000000000012,但printf
仅打印第一个数字。
您可以尝试printf("%.20lf", output);
打印更多数字。
但是,使用带有浮点的运算符==
并不是一个好习惯。