6.3w+
社区成员
double item=1.0;
double sum=0.0;
int n=1;
while(fabs(item)>eps){
sum+=item;
item*=-x;
item/=n;
}
return sum;
//这样好一点点,避免可能影响精度的重复计算
//其中y/fac的计算值得重新思考
//是x/1 * x/2 * x/3 ...的精度高还是y/fac的精度高还是去考虑这里的精度根本就没有意义呢
double x , y;
const double eps = 1e-8;
double c = 1, fac = 1, inc;
int s = 1, n = 1;
cin >> x;
y = x;
while (fabs(inc = s * 1.0 * y / fac)>eps)
{
c += inc;
s = -s;
fac *= ++n;
y *= x;
}
double x , y;
const double eps = 1e-8;
double l = 0, c = 1, fac = 1;
int s = 1, n = 1;
cin >> x;
y = x;
while (fabs(c-l)>eps)
{
l = c;
c += s * 1.0 * y / fac;
s = -s;
fac *= ++n;
y *= x;
}
cout.precision(16);
cout << c <<"\n";
#include <iostream>
#include <cmath>
using namespace std;
void main()
{
double x , y;
const double eps = 1e-8;
double l = 0, c = 1;
int s = 1, n = 1;
cin >> x;
y = x;
while (fabs(c-l)>eps)
{
l = c;
c += s * 1.0 * y / n;
s = -s;
n *= n+1;
y *= x;
}
cout.precision(16);
cout << c <<"\n";
}