++

2011-03-04 3 views
1
main() 
{ 
    double d1 = 1234.1; 
    cout << "d1 = 1234.1 --> " << d1 << endl; 
    double d2 = 1234.099999; 
    cout << "d2 = 1234.099999 --> " << d2 << endl; 
} 

출력 :++

d1 = 1234.1 --> 1234.1 
d2 = 1234.099999 --> 1234.1 

실제로 정확한 d2의 값, 즉 1234.099999하지만 같은을받지를 인쇄 할.

정확하게 값을 얻을 수있는 방법을 제안하십시오.

+0

코드의 내용이 손실 되었습니까? 거기에 d2를 얻는 방법은 없습니다. – murrekatt

+1

이 스레드를 살펴볼 수 있습니다. http://stackoverflow.com/questions/4217510/how-to-cout-the-correct-number-of-decimal-places-of-a-double-value – Chan

답변

7

당신은 cout.precisionhttp://www.cplusplus.com/reference/iostream/ios_base/precision/

는 또한 D2 매우 1234.099999없는주의 원하고, D1은 아주 1234.1

부동 소수점 숫자들이 기본적으로 적은 곳으로 반올림하는 이유에,이다, 반올림 오류를 소개하지 않습니다 의미있는 결과를 표시하십시오.

+0

답장을 보내 주셔서 감사합니다. 실제로 나는 문자 버퍼에 값 (1234.099999)을 저장해야한다는 요구 사항을 가지고 있지만, 문제를 일으키는 버퍼에 (1234.1)이 표시됩니다. 반올림하지 않고 정확한 값을 얻으려면 어떻게해야합니까? –

+1

그래서 더블 대신 문자열로 저장 하시겠습니까? 그것은'std :: string d2 = "1234.099999"; – Tim