C++题目 用泰勒级数求e的近似值 使e有小数点后1000位有效数字

#include<iostream>#include<cmath>#include<iomanip>usingnamespacestd;intmain(void){lon... #include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main(void)
{
long double e=1,s=1;
int n=1;
do
{
s*=n;
e+=1/s;
n+=1;
}
while(fabs(1/s)>1e-1000);
cout<<"e的近似值为:"<<setprecision(1001)<<e<<endl;
return 0;
}
展开
 我来答
金色潜鸟
推荐于2016-10-08 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5620万
展开全部
这道题很难,你需要编大数运算程序,一般大数运算也就搞到100位,你需要考虑运算中累积误差(泰勒级数每项都引进误差), 最终还要 满足有效数字精度1001位.

上面你写的程序精度 double 最多只有15位有效数字,库函数fabs 精度 double 也只有15位有效数字,你需要自己写fabs函数,不能用数学库的。

程序不太好写。是否题目搞错了。
追问
谢谢  题目没有错的  是我们的提高题之类的
追答
整型大数四则运算程序网上可以找到。一般程序开头有位数定义,例如:
#define MAX_DIGITS 100
你先把它变成 1001 试试,看能否算得结果,再考虑误差累积,增加位数计算。
级数分子分母分开计算,可以用整型大数乘法,调函数:
void mulBigInteger(char*mulor,char*mulant,char*result);
mulor -- 被乘数, mulant -- 乘数,result -- 结果。
大数除法:
void divide( char *numa, char *numb,char *result,char *remainder);
被除数,除数,商,余数
浮点数小数运算,可以考虑把分子扩大10的1000次方倍,或更多倍后用整型大数四则运算实现。
(你可以提高试试,我没试过,我不是研究数学的,不想在这方面耗费时间。)
亦如故需常神交
2014-06-28 · 超过23用户采纳过TA的回答
知道答主
回答量:45
采纳率:71%
帮助的人:32.8万
展开全部
明显long double 的精度是不够的
追问
是的   可是不会写精度够的啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qrlovewho
2014-06-28
知道答主
回答量:14
采纳率:0%
帮助的人:1.6万
展开全部
问题问的什么?哪里错还是哪里不懂
追问
我写出来的  只能到小数点后16位   其他都是0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式