당신의 정밀도는 떨어지지 않습니다.
무슨 일이 일어나고 있는지 확인하려면 스트림 라이브러리에서 숫자를 인쇄하면 표시된 값이 잘립니다. 특정 정밀도를 얻으려면 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";
어떤 플랫폼/아키텍처/컴파일러입니까? 당신은 실제로 무엇을 관찰 했습니까? – tenfour
아니요, 'L'이 맞습니다. – trojanfoe
당신은 자신을 더 설명해야 할 것입니다. double을 사용하는 코드, long double을 사용하는 코드, 각각의 결과, 결과가 잘못되었다고 생각하는 이유를 보여주십시오. –