Lors de la déconnexion d'un flottant dans Objective-C, vous pouvez effectuer les opérations suivantes pour limiter votre sortie à seulement 2 décimales:
float avgTemp = 66.844322156
NSLog (@"average temp. = %.2f", avgTemp);
Mais comment faites-vous cela dans Swift? Et comment échapper à d'autres personnages dans println
dans Swift?
Voici une instruction régulière Swift println
:
println ("Avg. temp = \(avgTemp)")
Alors comment limiter les décimales?
De plus, comment échappez-vous aux guillemets doubles dans println
?
Voici la solution la plus courte que j'ai trouvée jusqu'à présent:
let avgTemp = 66.844322156
println(NSString(format:"%.2f", avgTemp))
C'est comme la Swift version de stringWithFormat
de NSString
Tout sur le format d'un nombre sous forme de chaîne peut être ajusté à l'aide d'un NSNumberFormatter:
let nf = NSNumberFormatter()
nf.numberStyle = NSNumberFormatterStyle.DecimalStyle
nf.maximumFractionDigits = 2
println(nf.stringFromNumber(0.33333)) // prints 0.33
Vous pouvez échapper aux guillemets avec une barre oblique inverse
println("\"God is dead\" -Nietzsche")
Println () est déconseillé.
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
Si vous devez souvent imprimer des nombres à virgule flottante avec une certaine précision, vous pouvez étendre Float et Double avec des méthodes pratiques. Par exemple, pour une précision de 2 chiffres significatifs:
// 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)!
}
}
}
Ensuite, lorsque vous devez imprimer des choses:
let x = 5.23325
print("The value of x is \(x.sf2)")