
delphi语言编程:π/4=1-1/3+1/5-1/7+…,请计算π的近似值 直到精确度10e-6位置
展开全部
如果要精确到小数点后6位,需要计算到小数点后7位。
function GetPI: Double;
var
i: Integer;
j: Double;
flag: Boolean;
begin
Result := 0;
i := 1;
j := 1;
flag := True;
while j >= 0.0000001 do
begin
if flag then Result := Result + j
else Result := Result - j;
Inc(i, 2);
j := 1/i;
flag := not flag;
end;
Result := Result * 4;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := FormatFloat('0.000000', GetPI);end;
function GetPI: Double;
var
i: Integer;
j: Double;
flag: Boolean;
begin
Result := 0;
i := 1;
j := 1;
flag := True;
while j >= 0.0000001 do
begin
if flag then Result := Result + j
else Result := Result - j;
Inc(i, 2);
j := 1/i;
flag := not flag;
end;
Result := Result * 4;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := FormatFloat('0.000000', GetPI);end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用迭代的方式不断逼近,直到前后两次计算值差满足要求
procedure TForm1.Button1Click(Sender: TObject);
const
e=1.0E-6;//精度
maxn=10000000;//计算次数上限
var
n,k:longint;
ans1,ans2:extended;
begin
ans1:=0;ans2:=0;n:=-1;k:=-1;
repeat
k:=-k;n:=n+2;
ans1:=ans2;
ans2:=ans2+4*k/n;
until (abs(ans2-ans1)<=e) or (n>=maxn);
Edit1.Text:=copy(floattostr(ans2),1,trunc(-ln(e)/ln(10))+2);
end;
procedure TForm1.Button1Click(Sender: TObject);
const
e=1.0E-6;//精度
maxn=10000000;//计算次数上限
var
n,k:longint;
ans1,ans2:extended;
begin
ans1:=0;ans2:=0;n:=-1;k:=-1;
repeat
k:=-k;n:=n+2;
ans1:=ans2;
ans2:=ans2+4*k/n;
until (abs(ans2-ans1)<=e) or (n>=maxn);
Edit1.Text:=copy(floattostr(ans2),1,trunc(-ln(e)/ln(10))+2);
end;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <math.h>
void main()
{
int s;
float n,t,pi;
t=1;pi=0;n=1.0;s=1;
while(fabs(t)>1e-6)
{
pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=pi*4;
printf("pi=%10.5f\n n=%3.0f",pi,n);
getch();
}
#include <math.h>
void main()
{
int s;
float n,t,pi;
t=1;pi=0;n=1.0;s=1;
while(fabs(t)>1e-6)
{
pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=pi*4;
printf("pi=%10.5f\n n=%3.0f",pi,n);
getch();
}
追问
用delphi语言
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var
a,O:integer;
b,c:double
begin
a=1;
b=1;
c=0;
o=1;
while len(floattostr(c))>=8 begin
c=c + o * (1/a);
a=a+2;
o=o*-1;
end;
edit1.text1=flosttostr(c);
a,O:integer;
b,c:double
begin
a=1;
b=1;
c=0;
o=1;
while len(floattostr(c))>=8 begin
c=c + o * (1/a);
a=a+2;
o=o*-1;
end;
edit1.text1=flosttostr(c);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询