欢迎来到天天文库
浏览记录
ID:33831135
大小:152.00 KB
页数:7页
时间:2019-03-01
《精确e的小数点后位数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、题目:精确e的小数点后位数(位数大于5000)题目:精确e的小数点后位数。(位数大于5000位)。程序代码://#include该头文件与String头文件功能大致相同,均为字符串模板类,可以定义字符串指针char*。//#include该头文件包含,即模板类中使用的assert函数,功能是可以在出错的时候指出。//#include该头文件包含输入输出流。//程序设计思路:e=1+1+1/2!+1/3!+1/4!+.....+1/n!(这是估算自然常熟e的公式)。//intlength:希望计算的长度,例如5000为
2、希望计算到小数点后五千位。//char*result:结果存储,需要预先分配空间。本程序采用十六进制,即本程序中数字0-9存储为0x00-0x09。//程序优越性较强:可以在一秒以内计算到小数点后10000位。#include#include#includeusingnamespacestd;voidcalculateE(intlength,int*result)//这是一个模板类的定义。{int*tmp;int*lastTmp;int*tempResult[2];//分配两个空间,存放的是指针。assert(result);//如果程
3、序遇到错误,将返回提示信息。tempResult[0]=newint[length];tempResult[1]=newint[length];tmp=tempResult[0];lastTmp=tempResult[1];inttmpIndex=0;memset(lastTmp,0,length*sizeof(int));//该函数的功能就是把lastTmp所指的一段数组空间清0。lastTmp[0]=1;for(intcal=2;cal<=length;++cal){memset(tmp,0,length*sizeof(int));intfirstNoZero=0;staticintdi
4、v=1;for(;div<=cal;++div){intquo=0;intrem=0;for(intj=0;j=firstNoZero-1;--i){intt
5、mp_sum=tmp[i]+result[i]+flag;flag=(tmp_sum>=10?1:0);result[i]=(flag?tmp_sum-10:tmp_sum);//flag如果大于10,则减去10再赋值。否则,直接赋值。}//估算到小数点后length位的算法。lastTmp=tmp;tmpIndex=(tmpIndex?0:1);tmp=tempResult[tmpIndex];}delete[]tempResult[0];delete[]tempResult[1];result[0]+=2;//result[0]存放最终结果。}intmain(){intn;cout<<"
6、pleaseinputyouwantedprecision(输入你想计算的精确度,即为length赋值):";//请输入你想计算的精确度,即小数点后的位数。cin>>n;cout<<"thenewlinefollowedby50number";//以每行50个数输出结果。int*result=newint[n+1];memset(result,0,(n+1)*sizeof(int));calculateE(n,result);//调用calculateE。cout<<"2.";for(inti=0;i7、ut<<'';//每输出5个数就输出一个空格。if((i+1)%50==0)cout<
7、ut<<'';//每输出5个数就输出一个空格。if((i+1)%50==0)cout<
此文档下载收益归作者所有