1. ホーム
  2. c++

[解決済み] C++でdouble(またはfloat)がNaNかどうか確認する

2022-03-24 16:31:57

質問

isnan()関数はありますか?

追記:私は MinGW (それが違いになるなら)。

からisan()を使って解決しました。 <math.h> には存在しない。 <cmath> であった。 #include 最初は

どのように解決するのですか?

IEEE規格によると、NaN値には奇妙な性質があり、それを含む比較は 常に は偽です。つまり、floatのfに対して f != f は真になります だけ f が NaN の場合。

以下のコメントで指摘されているように、すべてのコンパイラがコードを最適化する際にこれを尊重しているわけではないことに注意してください。

IEEE浮動小数点を使用することを主張するコンパイラの場合、このトリックは べきである が働きます。しかし、私はそれを保証することはできません は実際に動作します。疑問があれば、コンパイラーに確認してください。