long double に関する情報を検索してみましたが、これまでのところ、コンパイラによって実装が異なることがわかりました。
Ubuntu (XUbuntu) Linux 12.10 で GCC を使用すると、次のようになります。
double PId = acos(-1);
long double PIl = acos(-1);
std::cout.precision(100);
std::cout << "PId " << sizeof(double) << " : " << PId << std::endl;
std::cout << "PIl " << sizeof(long double) << " : " << PIl << std::endl;
出力:
PId 8 : 3.141592653589793115997963468544185161590576171875
PIl 16 : 3.141592653589793115997963468544185161590576171875
彼らが(ほぼ)同じものを出力する理由を誰でも理解していますか?