[iPhone] Swiftでの Int, String, Double を変換してみると


Swiftにおける数字と文字の変換について
基本的には Int(), String(), Double() のキャストです

Swift 5
Xcode 10.2

 

Int, String, Double 変換

 
数字文字変換はいつも悩むところですので整理しておきました。
 

 

Int -> String

 
整数の Int型 から文字列の String型 への変換です
String()、descriptionが使えます。

ここで一応Int型にはビット数が異なるタイプや符号つき、符号なしがあります。
これらの変換もIntと同じですが数値範囲を考慮する必要があります。
またIntは実行環境によって32ビット環境ではInt32、64ビットInt64と同じになります。

  • Int8:-128 〜 127
  • Int16: -32768 〜 32767
  • Int32: -2147483648 〜 2147483647
  • Int64: -9223372036854775808 〜 9223372036854775807
  • UInt8: 0 〜 255
  • UInt16: 0 〜 65535
  • UInt32: 0 〜 4294967295
  • UInt64: 0 〜 18446744073709551615

結局これらの変換は同じですが
ビット数や符号による範囲外にはできないので注意しておきましょう。
また、これらの数値は以下のようにmax、minを使って調べられます。

 

String -> Int

 
文字列 String型 から整数 Int型 への変換
Int() でキャストしますが、Stringなので数字ではない場合もあるので注意が必要

 

Double -> String

 
浮動小数点 Double型 から文字の String型への変換
こちらもString()、descriptionが使えます。

 

String -> Double

 
文字列の String型 から浮動小数点の Double型 への変換
Double()、Darwin.atof()が使えます

 

Int <-> Double

 
整数の Int型 から浮動小数点の Double型 への変換

 

Float <-> Double

 
浮動小数点どうしなのですが、あえてここでは浮動小数点による違い、誤差がでるので気をつけないといけないということです。

工学的には誤差が小さいので無視できると言えますが、銀行などのお金を扱う場合は困ります。

FloatからDoubleに変換すると誤差がでますが、DoubleをFloatに変換すると誤差はでません。ところがFloat80にすると誤差がでます。

これは有限桁数の2進数によって計算すると,丸め誤差がでるからです。これを回避するためには数値を文字列として扱うか、NSDecimalNumberを使う必要があります。

 
 
関連ページ: