2016-09-28 3 views
0

, 여기cpp에서 소수점 이하 2 자리 숫자로 이중 숫자를 고칠 수있는 방법은 무엇입니까? 같은

(모든 변수는 double 형이다)

AC = sqrt((AB*AB)+(BC*BC)); 

BD = sqrt((BC*BC)+(CD*CD)); 

, 내가 소수점 이하 2 자리로 고정 AC와 BD의 값을 원하고 나는 AC와 BD를 추가 할 . 이제, 만약 내가 (소수점 3 자리) AC = 4.564 및 BD = 4.789를 추가하면 그 결과는 9.351입니다. 다시 (소수점 이하 2 자리) AC = 4.56 및 BD = 78을 취하면 결과를 더한 후 결과는 9.34입니다. 이제 두 결과를 소수점 다음에 2 자리로 고정하면 9.35와 9.34가 ​​각각 표시됩니다. 그러나 나는 결과로서 9.34를 원한다. 정확성

+0

인쇄 할 때'setprecision()'을 사용하십시오. – Barmar

+0

구체적인 문제를 명확히하거나 추가 세부 정보를 추가하여 필요한 것을 정확하게 강조하십시오. 현재 작성된 내용이므로 귀하가 원하는 내용을 정확하게 말하기는 어렵습니다. How to Ask 페이지에서이 질문에 대한 설명을 참조하십시오. – Olaf

+0

하자, 나는 AC = 4.564와 BD = 4.789를 발견했다; 이제, AC에 BD를 더하고 싶다면 결과는 9.351이고, 소수점 다음에 2 자리 숫자를 인쇄하면 9.35가됩니다. 하지만 AC = 4.56, BD = 4.78이면 결과는 9.34입니다. 그리고 결과로 9.34를 원합니다. –

답변

-1

진수는 다음과 같이 스트림에 수정을 사용 후 2 자리와 출력을 두 번 값을하려는 경우 :

std::cout << std::setprecision (2) << std::fixed << AC; 

이 뜻 출력 2 자리 부동 소수점 수의 고정 소수점 표현을 정밀도.

또한, 둥근 천장을 만들다 바닥 기능을보고 다음을 사용해야합니다

ANS = 라운드 (AC * 100.0)/100.0

당신이 원하는 것을 할 수 있습니다. 십진법 다음에 모든 숫자를 소수점 두 자리로만 표현할 수는 없으므로 모든 비교는 대상에 대한 답의 근접성을 +/- 목표 값에 작은 엡실론으로 테스트해야합니다.

재무 계산을 위해 계산 된 값을 사용하려는 경우 제한된 정밀도의 비트로 특정 값을 정확하게 표현할 수 없으므로 이중 유형을 사용하는 것은 매우 위험합니다. 유동/이중 유형으로 재무 계산을 수행 할 때 오류가 누적 될 수 있습니다.

+0

'printf'를 잃어 버리는 것이 좋습니다. 이것은 C++입니다. – user4581301

0

두 소수 :

  1. 곱하기 100

에 의해 가장 가까운 정수 아래

  • 격차를 0.5
  • 라운드를 추가하지만 100
  • 에 의해 당신에게 일어날 경우 정수 값으로 끝나면 "소수점 이하 2 자리"가 표시되지 않습니다.

  • 관련 문제