用C++计算Ramanujan的常数

Ab_*_*_Sh 2 c++ math double

你可以看到Ramanujan的常数.
这是我的代码:

#include <iostream>
#include <math.h>
#define _USE_MATH_DEFINES
using namespace std;

int main ()
{
long double s=sqrt(163);
long double P=M_PI;
long double R=exp(s*P);

cout.precision(150);

cout<<"Pi=  "<<P<<"\n"<<"sqrt(163)=  "<<s<<"\n"<<"R=  "<<R;
return(0);
}   
Run Code Online (Sandbox Code Playgroud)

这是我的出局:

Pi=  3.141592653589793115997963468544185161590576171875
sqrt(163)=  12.767145334803704059822848648764193058013916015625
R=  262537412640768256  
Run Code Online (Sandbox Code Playgroud)

我的计划有什么问题?
正确的输出是262537412640768743.99999999999925 ...

Dre*_*ann 5

A double具有大约15个十进制数字的精度.

你的程序使用的M_PIdouble,而不是along double.

因此,您的答案大约有15位精度.