-1

私はDelphi 10.1でDelphiアプリケーションを開発中です。 私は32ビットで正常にコンパイルしましたが、今は64ビットでコンパイルしています。Delphi 64bit NaNと無効な浮動小数点

一部の機能では、NaNがその変数Resultに割り当てられています。
64ビットの場合、NaNの代わりに-1.#INDが割り当てられます。 1つの<結果

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

が生成される例外

無効な浮動小数点演算のようにそれを比較するとき エラーは、後に起こります。

+0

To 1:どのような正確なエラーがさらに発生しますか? 2:整数のゼロ除算は例外を発生させるはずです。問題はどこだ? –

+0

1.エラーは比較時に発生します.1 <結果... – poonam

+0

**何が**エラーですか?この情報を質問に含めてください。 –

答えて

1

浮動小数点数がNaNであることがわかっているまたは疑われる場合。次に、NaNをテストするか、例外を処理する準備をする必要があります。

NaN番号の操作は例外をトリガします。

あなたは整数除算として扱われるの整数で除算を強制C異なりIsNaN function

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

を使用してのNaNをテストすることができ、Delphiは別のオペレータを有します。

/は常に浮動小数点結果を生成します。 divは常に整数の結果を生成します。

最後に、浮動小数点値の操作はすべてIEEE-754の対象となります。

+1

IEEE 754は、静かなNaN変数がそれ自身との等価性テストのためにfalseをテストすることを指定しています。 NaNがFPUに置かれたときにDelphiが例外をスローするため、テストを実行できません。 –

関連する問題