如果真要精确地计算无限大的数据的话,我想现代计算机绝对做不能,因为它们会受到内存的限制(除非内存足够大), 由于内存的限制,所有的开发语言的变量都会有一定的范围,这就是为什么你们所碰到溢出的原因。如果你不是在钻牛角尖的话,我想int64类型已足够大。或者你还不满足,你也可以用Stream来处理。For Example:function TForm1.aa(const n: integer): int64; var i: integer; begin for i := 1 to n do begin try Result := Result + i; except RaiseLastWin32Error; end; end; end;
for i:=1 to n do
begin
s=s+i;
end
或者更简单:
S=((N+1)*N)/2即可。
for i:=1 to n do
begin
try
s=s+i;
except
showmessage('wrong');
end
或者更简单:
S=((N+1)*N)/2即可。
2.楼上都n:integer????n:int64这样正解.....
3.如果你用公式的话就不会溢出.....
var
i: integer;
begin
for i := 1 to n do
begin
try
Result := Result + i;
except
RaiseLastWin32Error;
end;
end;
end;