1. ホーム
  2. objective-c

[解決済み] Objective-C - nan のフロートチェック

2023-06-24 08:46:05

質問

私は変数 float slope という値を持つことがあります。 nan で除算されるため、プリントアウトされたときに 0 で割ると時々起こる。

私はそれが起こるときのためにif-elseをしようとしています。どうすればいいのでしょうか? if (slope == nan) はうまくいかないようです。

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

2つの方法がありますが、ほぼ同じです。

if (slope != slope) {
    // handle nan here
}

または

#include <math.h>
...
if (isnan(slope)) {
    // handle nan here
}

( man isnan を使えばもっと詳しい情報が得られますし、C言語の標準に書かれていることを読んでもいいでしょう)

あるいは、除算を行う前に分母が0であることを検出することができます(あるいは atan2 を使ってしまうのであれば atan を使うだけで終わってしまうような場合は、他の計算をする代わりにスロープに)