0
5

More than 1 year has passed since last update.

[Swift] Doubleを少数第x位まで表示させる方法

Posted at

はじめに

今回解決したい問題は、
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を定義してあげると他の場面での応用が効くと思います。
最後までご覧いただきありがとうございました!

0
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
5