1. ホーム
  2. swift

[解決済み] Swiftの精密文字列フォーマット指定子

2022-03-21 17:30:53

質問

以下は、以前は浮動小数点以下2桁まで切り捨てていた方法です。

NSLog(@" %.02f %.02f %.02f", r, g, b);

ドキュメントやeBookを確認しましたが、解りませんでした。ありがとうございます。

解決方法は?

これまでのところ、私のベストソリューションは、以下の通りです。 Davidの回答 :

import Foundation

extension Int {
    func format(f: String) -> String {
        return String(format: "%\(f)d", self)
    }
}

extension Double {
    func format(f: String) -> String {
        return String(format: "%\(f)f", self)
    }
}

let someInt = 4, someIntFormat = "03"
println("The integer number \(someInt) formatted with \"\(someIntFormat)\" looks like \(someInt.format(someIntFormat))")
// The integer number 4 formatted with "03" looks like 004

let someDouble = 3.14159265359, someDoubleFormat = ".3"
println("The floating point number \(someDouble) formatted with \"\(someDoubleFormat)\" looks like \(someDouble.format(someDoubleFormat))")
// The floating point number 3.14159265359 formatted with ".3" looks like 3.142

フォーマット操作をデータ型に直接結びつける、これが最もSwiftらしい解決策だと思います。フォーマット操作の組み込みライブラリがどこかにあるかもしれませんし、近々リリースされるかもしれません。この言語はまだベータ版であることを念頭に置いてください。