2016-10-29 9 views
0

나는 말한다 루프가0과 음수가 아닌 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"); 
} 

이 -0.000000 왜이 덜 0보다이라고 말하고, 제 3 조건을 인쇄 유지 문제를 어떻게 해결할 수 있습니까?

+1

확실한가요? -0? 이 줄 바로 앞에'printf ("output = % f \ n", output);를 추가하면 무엇이 출력됩니까? – dbush

+1

또한'출력 '이 어떻게 할당되고 있습니까? – dbush

+2

'=='를 사용하여 부동 소수점 숫자를 비교하는 것은 (기본적으로) 결코 작동하지 않습니다. – UnholySheep

답변

5

메모리의 이중 표현이 정확하지 않기 때문에 이런 현상이 발생합니다. 예를 들어, output은 -0.000000000000012와 같을 수 있지만 printf은 첫 번째 숫자 만 인쇄합니다. 숫자를 더 인쇄하려면 printf("%.20lf", output);을 시도하십시오.

그러나 부동 소수점으로 연산자 ==을 사용하는 것은 좋지 않습니다.