2012-06-20 4 views
2
double x = 9.29; 
double y = 8.69; 

double diff = floor((x - y)*100+0.5)/100.0; 

이 날은 0.6 DIFF 제공하지만 사람이 좀 도와 주 시겠어요 0.60 (소수 2 자리)로해야합니까?반올림 두 개의 소수점

+3

[표준 : setprecision (http://en.cppreference.com를 얻을 것이다/w/cpp/io/manip/setprecision) – chris

+0

나중에 인쇄 하시겠습니까? 그것은 0.6과 0.60이 차이를 만들 때 일 것입니다. 그리고 그 경우, 당신이 인쇄하는 방법이 어떤 대답이 더 좋은지에 차이를 만들 것입니다. – crashmstr

+0

diff 변수에 저장하고 싶습니다. – CamAd

답변

7

0.6과 0.60은 (수학적으로) 같은 것이기 때문에 double의 값은 0.6입니다. 필요한 것은 값을 계산할 때 정밀도를 설정하지 않는 것입니다. 당신이 다음 시도 C를 사용 ERE 경우

cout.precision(2); 
cout << fixed << diff << "\n"; 

: 이것은 당신이 그런 일을해야 ++ C를 사용하는 경우

cout << setprecision (2) << diff << endl; 

또는

printf("%.2f\n", diff); 
+0

diff가 double이므로 ---->'printf ("% .2f \ n", diff);'경고를 발생시킵니다. '% .2e' /'% .2E' 또는'% .2lf'를 써야합니다. –

2

을 사용하여 수행 할 수 있습니다

이 :

printf("%.2e\n", diff); 

precision 함수는 부동 소수점 값을 표현하기 위해 삽입 연산에서 기록 할 최대 자릿수를 결정합니다. 그래서, 당신이 코드를 실행하면 당신은

0.60 

을 얻을 것이다 당신이 3에 presision를 설정하면 당신은

0.600 
관련 문제