【发布时间】:2016-10-28 20:52:24
【问题描述】:
我在 Delphi 中有这个源代码,为什么我在运行代码时收到此错误 "Floating point overflow."?以及如何纠正?
错误信息:
代码:
procedure TForm1.Button1Click(Sender: TObject);
var n, d, i, j, maxiter , iter: Integer;
Lower,Upper : Double;
X, V : TArray<TArray<Double>>;
begin
Lower := 0;
Upper := 0.2;
n := 100;
d := 55;
SetLength(V, n, d);
SetLength(X, n, d);
maxiter := 2000;
iter := 1;
for i:= 0 n-1 do
for j:=0 to d-1 do
begin
X[i][j]:= Lower + (Upper - Lower) * Random;
V[i][j] := 0.1 * X[i][j];
end;
while (iter <= maxiter) do
begin
for i:= 0 to n-1 do
for j:= 0 to D-1 do
V[i][j]:= 5 * V[i][j] + 2.0 * Random;
iter := iter +1;
end;
end;
【问题讨论】:
-
在
for循环中,您使用i索引,但它未初始化,所以我希望Access violation,但是......你没有说你在哪一行得到错误. -
启用警告和提示以及范围检查,然后处理来自这些更改的内容。
-
@TomBrunberg 如何在 for 循环中初始化 i ?这一行的错误 V[i][j] := 5 * V[i][j] + 2.0 * Random;
-
我们无法猜测代码的用途。你听我的建议了吗?
-
嗯,在
for循环中,您访问X[i][j]和V[i][j],但您从不给i赋值,既不在循环之前,也不在循环内。也许您忘记了外部for i:= 0 n-1 do循环。 MBo回答了你的实际问题,似乎是正确的答案。以后请关注@David 的评论,进行正常的调试。