web-dev-qa-db-fra.com

Comment utiliser println dans Swift pour formater le nombre

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?

22
sirab333

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

27
sirab333

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")
11
Dash

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
7
Vicky

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)")
0
Daniel Howard