2017-09-27 15 views
2

double 값을 취하고 다른 double 값을 사용하여 추가 기능을 사용하여 답변을 얻으려고합니다. get 메소드/함수를 사용하여 답변 값을 가져옵니다. 대답 값은 int가 아닌 double 값으로 표시됩니다. 예를 들어 마찬가지로, + 10.0 12.0 22.0 동일하지만 난 단지 여기에 22을 말한다 결과를 표시 할 때이 코드의 결과는 22 입니다이중 값이 정수로 출력됩니다.

double x = 0.0; 
void addValue(double value) 
{ 
    x = value + x; 
} 

double getValue() 
{ 
    return x; 
} 
int main() 
{ 
    addValue(12.0); 
    addValue(10.0); 
    cout << getValue() << endl; 
    return 0; 
} 

내가 일하고 코드는 ... 무엇 나는 얻으려고하고있다. 22.0

나는 어떻게 이것을 설정 정밀도를 사용하지 않고 고칠 수 있냐?

+0

#include <iomanip>에서 'iomanip' 헤더 [setprecision (http://en.cppreference.com/w/cpp/io/manip/setprecision)을 갖는다. 나는 정밀도를 설정하는 방법을 묻는 지,'setprecision'을 사용하지 않고 어떻게 하는지를 알 수는 없다 ... – Jonesinator

+0

@Jonesinator setprecision을 사용하지 않고 그것을하려고한다. – Nicole

+0

왜? 그것이 정확히 무엇을위한 것입니다. – Jonesinator

답변

1

cout은 소수점 이하 자릿수가 0이면 반올림 값을 자릅니다. 12.5와 같은 실수 소수점 값을 사용하여 값을 인쇄 해보십시오. 따라서 .0 값을 인쇄해야하는 경우 setprecision을 사용하거나 printf을 사용해야합니다.

더 나은 이해를 위해 당신은이 질문에 How do I print a double value with full precision using cout?

+1

숫자를 제한하는'std :: cout'가 아닙니다. 자릿수; 이것은 스트림 삽입 기 ('<<'연산자)입니다. ** 어떤 ** 출력 스트림에서도 똑같은 것을 볼 수 있습니다 :'std :: ofstream out ("demo.txt"); out << 12.0 << '\ n'; '. –

0

당신은 정밀도를 설정하는 표준 : setprecision을 사용할 수 있습니다 통해 수행 할 수 있지만, 그것은 단지 정밀도를 설정하는 의미 (의미있는) 자리를 유지합니다. 이 특별한 경우 22.0에서는 0이 중요하지 않습니다. 따라서 실제로 22.0을 출력하려면 고정 된 정밀도 (원하는 값으로 값을 설정해야합니다)를 설정해야합니다. 코드는 다음과 같습니다.

#include <iostream> 
#include <iomanip> 
using namespace std; 

double x = 0.0; 
void addValue(double value) 
{ 
    x = value + x; 
} 

double getValue() 
{ 
    return x; 
} 
int main() 
{ 
    addValue(12.0); 
    addValue(10.0); 
    cout << fixed <<std::setprecision(1) << getValue() << endl; 
    return 0; 
} 
1
std::setprecision

사용

std::cout << std::setprecision (15) << getValue() << std::endl;