Cómo usar println en Swift para dar formato al número
nsformatter (4)
Cuando cierre una sesión flotante en Objective-C, puede hacer lo siguiente para limitar su salida a solo 2 decimales:
float avgTemp = 66.844322156
NSLog (@"average temp. = %.2f", avgTemp);
¿Pero cómo haces esto en Swift? ¿Y cómo escapar de otros personajes en println
en Swift?
Aquí hay una declaración de println
Swift regular:
println ("Avg. temp = /(avgTemp)")
Entonces, ¿cómo limitar los decimales?
Además, ¿cómo escapar de las comillas dobles en println
?
Println () está en desuso.
//or print(NSString(format:"average temp. = %.2f", avgTemp))) // average temp. = 66.84
avgTemp = 66.846322156var avgTemp = 66.844322156
print("average temp. = (round(avgTemp*100)/100)") // average temp. = 66.84
Aquí está la solución más corta que encontré hasta ahora:
let avgTemp = 66.844322156
println(NSString(format:"%.2f", avgTemp))
Es como la versión rápida de stringWithFormat de stringWithFormat
Si necesita imprimir números de punto flotante a menudo con cierta precisión, puede extender los métodos Flotante y Doble con métodos de conveniencia. Por ejemplo, para 2 cifras significativas de precisión:
// 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)!
}
}
}
Entonces cuando necesites imprimir cosas:
let x = 5.23325
print("The value of x is /(x.sf2)")
Todo lo relacionado con el formato de un número como cadena se puede ajustar utilizando un NSNumberFormatter:
let nf = NSNumberFormatter()
nf.numberStyle = NSNumberFormatterStyle.DecimalStyle
nf.maximumFractionDigits = 2
println(nf.stringFromNumber(0.33333)) // prints 0.33
Puedes escapar de las comillas con una barra invertida
println("/"God is dead/" -Nietzsche")