はじめに
DoubleからFloatにキャストした時のメモです。キャストといってもDoubleとFloatではビット数の違いにより有効桁数が異なるので、floor/ceil/roundあたりでDoubleの桁数を調整する。
記述
今回はTaskのprogressを監視するオブサーバーでDoubleが帰ってきたことを例にします。
TaskViewController.swift
task.observe(.progress) { (snapshot) in
let percentComplete = 100.0 * Double(snapshot.progress!.completedUnitCount) / Double(snapshot.progress!.totalUnitCount)
//桁数調整
let roundPercent = round(percentComplete * 10e6) / 10e6
//Double -> Float
let floatPercent = Float(roundPercent)
print(floatPercent)
}
最後に
Float -> 32bit -> 有効桁数:約7桁(10進数)
Double -> 64bit -> 有効桁数:約15桁(10進数)
CGFloatだと実行環境によってbit数が変わるみたいです。