Delphi 64位NaN和无效浮点数

Delphi 64位NaN和无效浮点数

问题描述:

我正在Delphi应用程序中使用Delphi 10.1。 我编译成功的32位,现在我正在编译64位。Delphi 64位NaN和无效浮点数

在某些功能中,NaN分配给它的Result变量。
在64位中,-1.#IND被分配而不是NaN。发生 错误,稍后,如1个<结果

abc = Nan; //so abc = -1.#IND 
if 1 < abc then // invalid floating point error here for 64bit 
begin 
end 

异常

无效浮点操作

升高比较时它。

+0

到1:进一步发生了什么确切的错误? 至2:整数零除应导致异常。哪里有问题? –

+0

1.比较时发生错误.1 poonam

+0

**什么**错误?请在问题中包含这些信息。 –

如果您知道或怀疑浮点数是NaN。然后你需要测试NaN或准备处理异常。

对NaN号码的任何操作都会触发异常。

可以使用IsNaN function

uses Math; 
..... 
if isNaN(x) then ...... 

不像C这些力分裂与整数被视为整数除法测试NaN时,Delphi有单独的运营商。

/总是产生浮点结果。 div总是产生一个整数结果。

最后,任何使用浮点值的操作都应遵循IEEE-754

+1

IEEE 754规定,一个安静的NaN变量会为自己的平等测试测试错误。当NaN放入FPU时,Delphi会引发异常,因此无法完成测试。 –