2016-10-29 120 views
0

我有被打印爲-0.000000負雙零不等於零?

我有一個循環,稱雙output

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

這樣可以使打印第3條件,說-0.000000小於0,這是爲什麼我該如何糾正這個問題?

+1

你確定它是-0?如果在這些行之前加上'printf(「output =%f \ n」,output);'它打印什麼? – dbush

+1

另外,如何分配輸出? – dbush

+2

用(==)比較浮點數是(基本上)永遠不會工作。 – UnholySheep

回答

5

發生這種情況是因爲內存中的雙重表示不準確。 例如,output可以等於-0.000000000000012,但printf僅打印第一位數字。 您可以嘗試printf("%.20lf", output);以打印更多數字。

但是,使用浮點運算符==不是一個好習慣。