문제

#include <iostream>
using namespace std;

int main()
{
    double u = 0;
    double w = -u;
    cout << w << endl;
    return 0;
}

이 훌륭한 코드 조각이 출력되는 이유는 무엇입니까? -0 그리고는 아니다 0, 예상대로?

도움이 되었습니까?

해결책

부동 소수점 숫자에 대한 IEEE 754 표준에는 가수와 분리된 부호 비트가 있으므로 0이 음수가 될 수 있습니다. 위키피디아 이것을 설명하는 데 도움을 줄 수 있어야 합니다.

다른 팁

IEEE 부동 소수점에서 0 그리고 -0 둘 다 서로 다른 값입니다. 여기 "특수 값"에서:

-0과 +0은 모두 동일하게 비교하지만 뚜렷한 값이지만 주목하십시오.

부동 소수점 연산에 대한 IEEE 754 표준은 다음을 구별합니다. +0 그리고 -0, 이는 부호가 여전히 중요한 경우 0으로 반올림된 매우 작은 숫자를 처리할 때 사용할 수 있습니다.

"음수 0"은 유효한 숫자이기 때문입니다!

http://en.wikipedia.org/wiki/%E2%88%920_(번호)

이 기사를 살펴보십시오. http://en.wikipedia.org/wiki/Floating_point.값이 0이더라도 부호 비트가 있다는 점에 유의하세요.

double은 실제로 -0, +0, -infinity, +infinity 및 NaN 값을 가질 수 있으며 이는 0/0과 같은 다양하고 흥미로운 표현식의 결과일 수 있습니다.

바라보다 여기 자세한 내용은.

당신의 기대가 틀렸기 때문이다.

IEEE에서는 양의 0과 음의 0을 별도로 표시하도록 요구합니다.

그것이 바로 당신이 여기서 보고 있는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top