[英]negative double zero not equal to 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。这是为什么,如何解决该问题?
发生这种情况是因为内存中的双重表示形式不准确。 例如, output
可以等于-0.000000000000012,但是printf
仅output
首位数字。 您可以尝试printf("%.20lf", output);
打印更多数字。
但是,将运算符==
与浮点数一起使用不是一个好习惯。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.