主题:[讨论]关于阶乘的问题,求助各位高手。谢谢
interegg
[专家分:80] 发布于 2006-08-28 08:51:00
计算:1+1/1!+1/2!+1/3!+……1/20!
小弟不才,我怎么也做不出来,好象要用高精度的,谁能告诉我啊。
谢谢
回复列表 (共12个回复)
沙发
lmj9201 [专家分:1400] 发布于 2006-08-28 15:15:00
var
m,x:integer;
e:real;
begin
m:=1;x:=0;e:=0;
repeat x:=x+1;
m:=m*x;
e:=e+1/m
until x=20;
write(e);
end.
这应该能过,不过不是我的程序,嘻嘻!:)
板凳
interegg [专家分:80] 发布于 2006-08-28 15:39:00
不可以的吧,20的!是超出整形范围的啊
3 楼
lmj9201 [专家分:1400] 发布于 2006-08-29 12:18:00
哦,
你小数点后要几位阿,如果要求不高的话,就用real存储了
var
i:integer;
a,k,b:real;
begin
k:=1;a:=1;
for i:=2 to 20 do
begin
k:=k/i;
a:=a+k;
end;
write(a);
end.
4 楼
lmj9201 [专家分:1400] 发布于 2006-08-29 12:19:00
如果要求高,就改为高精度存储就可以了
5 楼
interegg [专家分:80] 发布于 2006-08-29 16:55:00
是不是先用高精度算出介乘,再用高精度算除法,最后用高精度算加法?谢谢.
6 楼
冰中的火 [专家分:90] 发布于 2006-09-09 21:55:00
几乎不需要用高精度!!!!
7 楼
maxumi [专家分:2200] 发布于 2006-09-15 07:42:00
才到20, extended啊extended
8 楼
yangxu37 [专家分:30] 发布于 2006-09-18 05:33:00
直接用real就行了,最后用round四舍五入一下就好了.
9 楼
maxumi [专家分:2200] 发布于 2006-09-18 08:01:00
[quote]直接用real就行了,最后用round四舍五入一下就好了.
[/quote]
real才精确到小数点后9位, 貌似有点少
10 楼
bigchen [专家分:1940] 发布于 2006-10-26 22:52:00
这道题目似乎是我们培训教材上的!
应该不用高精度就可以做.
似乎REAL型就可以解决!
我来回复