web-dev-qa-db-ja.com

Swiftで数値をフォーマットするにはprintlnを使用する方法

Objective-Cでフロートをログアウトするとき、次のようにして出力を小数点以下2桁に制限できます。

float avgTemp = 66.844322156
NSLog (@"average temp. = %.2f", avgTemp);

しかし、Swiftでこれをどのように行うのでしょうか?そして、Swiftのprintlnの他の文字をどのようにエスケープしますか?

通常のSwift printlnステートメント:

println ("Avg. temp = \(avgTemp)")

それでは、小数点以下の桁数をどのように制限しますか?

また、printlnの二重引用符をどのようにエスケープしますか?

22
sirab333

これが私がこれまで見つけた最短の解決策です。

let avgTemp = 66.844322156
println(NSString(format:"%.2f", avgTemp))

NSStringのstringWithFormatのSwiftバージョン

27
sirab333

NSNumberFormatterを使用して、文字列としての数値の形式に関するすべてを調整できます。

let nf = NSNumberFormatter()
nf.numberStyle = NSNumberFormatterStyle.DecimalStyle
nf.maximumFractionDigits = 2
println(nf.stringFromNumber(0.33333)) // prints 0.33

バックスラッシュで引用符をエスケープできます

println("\"God is dead\" -Nietzsche")
11
Dash

Println()は非推奨です。

 var avgTemp = 66.844322156
  print("average temp. = (round(avgTemp*100)/100)")   // average temp. = 66.84


//or


print(NSString(format:"average temp. = %.2f", avgTemp))) // average temp. = 66.84 avgTemp = 66.846322156

print(String(format:"average temp. = %.2f", avgTemp)) // average temp. = 66.85
7
Vicky

浮動小数点数を特定の精度で頻繁に印刷する必要がある場合、便利な方法でFloatとDoubleを拡張できます。たとえば、2つの有効桁精度の場合:

// get Float or Double with 2 significant figure precision
var numberFormatter = NSNumberFormatter()
extension Float {
    var sf2:String {
        get {
            numberFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
            numberFormatter.maximumSignificantDigits = 2
            return numberFormatter.stringFromNumber(self)!
        }
    }
}
extension Double {
    var sf2:String {
        get {
            numberFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
            numberFormatter.maximumSignificantDigits = 2
            return numberFormatter.stringFromNumber(self)!
        }
    }
}

次に、物を印刷する必要がある場合:

let x = 5.23325
print("The value of x is \(x.sf2)")
0
Daniel Howard