Objective-Cでフロートをログアウトするとき、次のようにして出力を小数点以下2桁に制限できます。
float avgTemp = 66.844322156
NSLog (@"average temp. = %.2f", avgTemp);
しかし、Swiftでこれをどのように行うのでしょうか?そして、Swiftのprintln
の他の文字をどのようにエスケープしますか?
通常のSwift println
ステートメント:
println ("Avg. temp = \(avgTemp)")
それでは、小数点以下の桁数をどのように制限しますか?
また、println
の二重引用符をどのようにエスケープしますか?
これが私がこれまで見つけた最短の解決策です。
let avgTemp = 66.844322156
println(NSString(format:"%.2f", avgTemp))
NSStringのstringWithFormat
のSwiftバージョン
NSNumberFormatterを使用して、文字列としての数値の形式に関するすべてを調整できます。
let nf = NSNumberFormatter()
nf.numberStyle = NSNumberFormatterStyle.DecimalStyle
nf.maximumFractionDigits = 2
println(nf.stringFromNumber(0.33333)) // prints 0.33
バックスラッシュで引用符をエスケープできます
println("\"God is dead\" -Nietzsche")
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
浮動小数点数を特定の精度で頻繁に印刷する必要がある場合、便利な方法で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)")