Вы можете увидеть Ramanujan's constant.
Вот мой код:Рассчитать константу Рамануджана с C++
#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);
}
Это выложился из:
Pi= 3.141592653589793115997963468544185161590576171875
sqrt(163)= 12.767145334803704059822848648764193058013916015625
R= 262537412640768256
Что случилось с моей программой?
Правильный выход +262537412640768743,99999999999925 ...
Довольно вероятно, что это происходит потому, что [ 'ехр (...'] (http://www.cplusplus.com/reference/cmath/exp/) возвращает только двойной, который не имеет достаточной точности, чтобы справляться с вашими расчетами. –
@ben Неверно. http://en.cppreference.com/w/cpp/numeric/math/exp есть перегрузка для длинного двойного –
@RussellGreene Да, я просто это увидел. .. если OP не использует компилятор c90? –