2017-05-08 175 views
-1

我正在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

**什麼**錯誤?請在問題中包含這些信息。 –

回答

1

如果您知道或懷疑浮點數是NaN。然後你需要測試NaN或準備處理異常。

對NaN號碼的任何操作都會觸發異常。

可以使用IsNaN function

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

不像C這些力分裂與整數被視爲整數除法測試NaN時,Delphi有單獨的運營商。

/總是產生浮點結果。 div總是產生一個整數結果。

最後,任何使用浮點值的操作都應遵循IEEE-754

+1

IEEE 754規定,一個安靜的NaN變量會爲自己的平等測試測試錯誤。當NaN放入FPU時,Delphi會引發異常,因此無法完成測試。 –

相關問題