我正在写一个程序,我将数字乘以5 ...例如:
var
i:integer;
k:int64;
begin
k:=1;
for i:=1 to 200000000 do
begin
k:=5*(k+2);
end;
end;
end.
Run Code Online (Sandbox Code Playgroud)
但是当我编译并启动我的程序时,我得到一个溢出整数错误.我怎么解决这个问题?
k的正确值至少为5 ^ 20,000,000,或2 ^ 48,000,000.计算机上没有整数类型可以存储它; 这是48,000,000位,大声喊叫.即使你将它存储在二进制文件中,也需要6,000,000字节 - 5.7 MB - 来存储它.你唯一的希望是精确的仲裁库,祝你好运.
你想要计算什么?你现在正在做的是计算一个数字序列(k),其中第i个元素至少与5 ^ i一样大.除非你使用其他类型的变量,否则这将无法达到i = 20,000,000.