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
异常
无效浮点操作
升高比较时它。
答
如果您知道或怀疑浮点数是NaN。然后你需要测试NaN或准备处理异常。
对NaN号码的任何操作都会触发异常。
可以使用IsNaN function
uses Math;
.....
if isNaN(x) then ......
不像C这些力分裂与整数被视为整数除法测试NaN时,Delphi有单独的运营商。
/
总是产生浮点结果。 div
总是产生一个整数结果。
最后,任何使用浮点值的操作都应遵循IEEE-754。
+1
IEEE 754规定,一个安静的NaN变量会为自己的平等测试测试错误。当NaN放入FPU时,Delphi会引发异常,因此无法完成测试。 –
到1:进一步发生了什么确切的错误? 至2:整数零除应导致异常。哪里有问题? –
1.比较时发生错误.1 poonam
**什么**错误?请在问题中包含这些信息。 –