Swift文字列←→CGFloatやり方によっては誤差が含まれたまま文字列に変換されてしまう
目的:"1.1"をCGFloatに変換して、変換したCGFloatの値をもとの文字列"1.1"に戻したい
- 文字列からCGFloatに変換
- CGFloatから文字列に変換
誤差が含まれて文字列になってしまうやり方があることがわかった
"1.1"をfloatへ(1.100000023841858)これをCGFloatに変換してから文字列へ"1.100000023841858"
32bitアプリか64bitアプリかで違うということらしいので、64bitのCGFloatはdoubleのtypedef
// CGFloatより
/// The native type used to store the CGFloat, which is Float on
/// 32-bit architectures and Double on 64-bit architectures.
ここで注意して欲しいのは、CGFloat(Float("1.1"))としないこと、これは32bitアプリの場合
現在は64bitアプリなのでCGFloat(Double("1.1"))が正解
CGFloatへの変換はNumberFormatterクラスを使う
- NumberFormatterクラスを使う
これを使うといい
let strNum = "1.1"
let numberFormatter = NumberFormatter().number(from: strNum) ?? 0.0
let cgFloat = CGFloat(truncating: numberFormatter)
let str = "\(cgFloat)"