繁体   English   中英

负双零不等于零?

[英]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,但是printfoutput首位数字。 您可以尝试printf("%.20lf", output); 打印更多数字。

但是,将运算符==与浮点数一起使用不是一个好习惯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM