1

当我运行我的程序时,会发生错误:

program lab_1_27;
uses crt;
var
x, y, z: real;
a: integer;


function pow_udf(m, n:real) : real;
var
  result: real;
begin
  result:= exp(y * ln(x));
end;


begin
  clrscr;

  readln(x);
  readln(y);
  z:= pow_udf(x, y);

  a:= round(z); (* a cursor is in this line after terminating the program *)
  writeln(a);

readkey;
end.

错误:

Error 207: invalid floating point operation.

请告诉我这种行为的原因是什么,因为我无法资助它......

4

2 回答 2

1
function pow_udf(m, n:real) : real;
var
  result: real;
begin
  result:= exp(y * ln(x));
end;

上面的代码将计算分配给一个名为的局部变量result,但未能从函数返回任何结果。它还处理全局变量xy而不是传递给函数的变量。将其替换为:

function pow_udf(m, n:real) : real;
begin
  pow_udf:= exp(n * ln(m));
end;
于 2013-09-12T18:13:47.743 回答
1

老问题,但我在程序中遇到了同样的错误,我的解决方案不同;可能会帮助其他人搜索此错误代码。

对于我的程序,我使用了编译器指令 N-,通过将其切换到 N+,我看到速度有了相当大的提高,但随后开始出现错误 207。

在源代码的顶部添加指令 N-,例如。

{$N-}
PROGRAM ExampleProg;
USES Crt, Dos;

或进入编译器选项并禁用 8087/80287 处理。这可能会解决您的问题。

注意:如果您在源代码中定义了编译器指令 N+,那么更改 IDE 中的选项将无济于事;源代码否决!

于 2015-12-10T17:54:03.503 回答