conocode
このコード
トラブルシューティング

Objective-C %f で値を表示させたら inf と表示される

NSLog で float の値を表示させようとしたら inf って表示されるんですけど
それは計算処理を見直したほうがいいかもね

XCode Objective-C で難しい計算系のiOSアプリを開発しているときに、値を表示させながら実装をしていたら、値の表示に inf と表示されることがありました。

float の値を %f で表示させたのですが、数値を表示させているのに inf という文字列が表示されることに ??? となったわけです。

inf が表示される原因

答えは単純でした、値を算出する計算式の分母が 0 になってしまっていました。

0 で割り算をすると停止してしまうプログラミング言語は多いですが、Objective-C では処理を続行してしまうようです。

そして、0 で割った結果を %f で表示しようとすると inf と表示されるようです。

0で割ると結果は無限大になります。無限大は英語で infinity なので inf が表示されるということです(たぶん)。

現象への対処

0 で割り算をするというのは、処理的には正しくないので、実装のどこかに間違いがある可能性が高いです。

本来 0 になるべきではない値が 0 になっているので、その辺りを重点的に調査してデバッグしましょう。

ちなみに、

のような整数型で0割り算をして、%d を表示してみると 0 が表示されます

これは間違いに気づきにくいので危険ですね。