##はじめに
今回解決したい問題は、
Double型の3.5 → 3.50 という表示にする方法です。
これだけではイメージが湧きにくいので具体例を用いていきましょう。
##前提
Double型は少数を扱えるのですが、例えば下記のようなDoubleをStringに変換するコードの場合、
不要な0(この場合、少数第二位)が勝手に切り捨てられてしまいます。
let hoge: Double = 3.50
let string = String(hoge)
print(string)
//3.5 ←0が切り捨てられてしまいます。
これでは何かの平均をだして少数第x位まで省略せずにlabelに表示させたいなどのユースケースの場合にとても不便です。
そのような場合に下記の処理を書くことで解決できます。
let hoge: Double = 3.50
let string: String = String(format: "%.2f", hoge)
print(string)
// 3.50 ←0が切り捨てられない。
ここの**%2fというとこで少数第二位まで有効にすることを制御しています。
つまり少数第三位まで表示させたい場合はString(format: "%.3f", hoge)**とするだけです。
これらの処理は四捨五入をするものではありませんのでご留意を。
四捨五入や少数点の切り捨て上げを行い処理は
round() → 四捨五入
floor() → 切り捨て
ceil() → 切り上げ
などを使うのでごっちゃにならないようにしましょう。
##Extensionで汎用的にする
extension String {
static func decimalNumber(index: Double, number: Int) -> String {
return String(format: "%.\(number)f", index)
}
}
//呼び出し側
let hoge: Double = 3.50
let string = String.decimalNumber(index: hoge, number: 2)
print(string)
//3.50
こんな感じでextensionを定義してあげると他の場面での応用が効くと思います。
最後までご覧いただきありがとうございました!