2011-10-25 3 views
1

long double을 사용할 때 double을 사용할 때보 다 정밀도가 떨어집니다. 3.14159265358979323846264Llong double const을 소스 코드로 작성하는 것이 좋습니다. 아니면 L 이외의 것을 추가해야합니까?정밀 long double double보다 나쁨

수정 나는이 문제를 해결했다. 알고리즘을보다 정확하게 변경합니다.

+0

어떤 플랫폼/아키텍처/컴파일러입니까? 당신은 실제로 무엇을 관찰 했습니까? – tenfour

+0

아니요, 'L'이 맞습니다. – trojanfoe

+4

당신은 자신을 더 설명해야 할 것입니다. double을 사용하는 코드, long double을 사용하는 코드, 각각의 결과, 결과가 잘못되었다고 생각하는 이유를 보여주십시오. –

답변

5

당신의 정밀도는 떨어지지 않습니다.

무슨 일이 일어나고 있는지 확인하려면 스트림 라이브러리에서 숫자를 인쇄하면 표시된 값이 잘립니다. 특정 정밀도를 얻으려면 std :: setprecision을 사용하십시오.

double  x = 1.0/3; 
long double y = 1.0/6; 

// Prints out the precision 
std::cout << "Limit: " << std::numeric_limits<double>::digits10 << "\n"; 
std::cout << "Limit: " << std::numeric_limits<long double>::digits10 << "\n"; 

// prints the numbers with max precision. 
std::cout << std::setprecision(std::numeric_limits<double>::digits10) << x << "\n"; 
std::cout << std::setprecision(std::numeric_limits<long double>::digits10) << y << "\n";