【Swift】Nan(Not a Number)とは?識別方法と意味!

この記事からわかること
- Swiftで浮動小数点数型(DoubleやFloat)の扱い
- Nan(Not a Number:非数)とは?
- Nanを識別する方法
- Double value cannot be converted to Int because it is either infinite or NaNエラーとは?
- infinityプロパティ:∞とは?
index
[open]
\ アプリをリリースしました /
環境
- Xcode:14.3.1
- iOS:16.4
- Swift:5.8.1
Nan(Not a Number)とは?
Nan(非数)とはNot a Numberの略称でプログラム言語で数値として表せない計算結果になった際などに利用される数値表現です。SwiftでもNanになる可能性があり、特定の計算を行った際などにnan
という値が格納されることがあります。
SwiftではDoubleやFloatのタイププロパティとしても定義されており、計算せずとも参照することも可能です。
似たようなものにinfinity
プロパティから∞
を参照することも可能です。type(of:)
でデータ型を調べると特別な型ではなくDoubleやFloatのままになっています。
計算でNanになる例
計算でNanになる例をみてみます。例えばDouble
の0.0
同士を割り算するとnan
になります。
Nanを識別する
計算の結果nan
になってしまった場合、その数値を使って計算してもnan
にしかならないのでisNaN
プロパティを使用してnan
であるかを識別して処理を分岐させる必要があります。
Double value cannot be converted to Int because it is either infinite or NaN
nan
になっただけではアプリはクラッシュしませんが、Int
型などに型変換を試みるとDouble value cannot be converted to Int because it is either infinite or NaN
というエラーが発生しアプリがクラッシュしてしまいます。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。