#include
void main( )
{
double x=0, z=2;
int a=0, b=1;
while(z>1e-15)
{
x+=z;
a++;
b+=2;
z=z*a/b;
}
cout.precision(15);//设置浮点数输出时的有效位数为15位
cout<<"Pi="<
}
l 计算结果为:
Pi=3.14159265358979(14位)
使用double型的精度很低,只能计算到小数点后14位。所以我们需要把上面的程序改造一下,让它精确到小数点后面1000位,怎么办呢?我们可以定义一个字符数组来存放十进制数的每一位,如下:
const int ARRSIZE=1010, DISPCNT=1002;//定义数组大小,显示位数
static char x[ARRSIZE], z[ARRSIZE];//x[0],x[1],x[2],x[3]...x[ARRSIZE-1]
其中小数点定位在数组X[1]和X[2]之间,即小数点前面是2位整数(X[0]和X[1]),从X[2]开始都是小数位。并利用计算机来模拟四则运算的笔算方法来实现高精度的数据计算。
在程序中还要计算出所用的时间(毫秒级)。
提示:利用timeGetTime()函数,这个函数返回一个DWORD(双字)的毫秒数据,编译时,加上头文件windows.h,在project->settings->link->Object/library modules中加上winmm.lib。可以通过两次返回的差值计算出所用的计算时间(毫秒数)。
请教一下怎么做啊,谢谢了
--------------------next---------------------
阅读(2041) | 评论(0) | 转发(0) |