2013-09-23 3 views
1

파이의 더 많은 숫자를 인쇄하려면 프로그램에서 긴 double 유형을 사용하려고했습니다. 그러나 소수점 5 자리 만 보여줍니다.파이의 십진수를 더 인쇄 할 수 없습니다

여기 내 코드입니다.

pi to 18: 3.14159 

가 어떻게이 문제를 해결할 수

:

int main(int argc, char** argv) { 

    long double pi_18 = acos(static_cast<long double>(-1)); 
    cout << "pi to 18:" << pi_18 << endl; 

    return 0; 
} 

는이 내 출력? 그래서 같이

+1

ACOS을 더블을 받아 너무도 당신이 당신의 입력과 출력을 변환하는 경우 더블을 반환 double double 정밀도를 넘어서서는 안됩니다. 왜냐하면 입력이 double 정밀도로 잘리고 출력이 double 값의 long double 값으로 변환되기 때문에, 대신 acosl()을 사용하십시오 – woggio

+1

@ user2318607 - 만약'acos'가'std :: acos'가 오버로드되고'acos ( (-1)'은 long double을 반환하지만, 함수 호출은'aces (1.0L)'로 작성하는 것이 더 낫습니다. –

답변

2

:

#include <iomanip> 
#include <iostream> 

std::cout << std::setw(15) << pi_18 << std::endl; 

폭의 수정은 다음 형식의 작동에 영향을 미치므로 여러 수치를 포맷 할 경우, 당신은 모든 일 전에 반복해야합니다. 형식 지정자 the full documentation을 확인하십시오.

cout.precision(15); 

이 한 번만 정밀도를 정의 할 수 있습니다 :

관련 문제