Im Folgenden wird gezeigt, wie ich zuvor einen Float auf zwei Dezimalstellen gekürzt hätte
NSLog(@" %.02f %.02f %.02f", r, g, b);
Ich habe die Dokumentation und das eBook überprüft, aber bisher nicht herausfinden können. Vielen Dank!
Im Folgenden wird gezeigt, wie ich zuvor einen Float auf zwei Dezimalstellen gekürzt hätte
NSLog(@" %.02f %.02f %.02f", r, g, b);
Ich habe die Dokumentation und das eBook überprüft, aber bisher nicht herausfinden können. Vielen Dank!
Meine bisher beste Lösung, basierend auf David's Antwort:
import Foundation
extension Int {
func format(f: String) -> String {
return String(format: "%\(f)d", self)
}
}
extension Double {
func format(f: String) -> String {
return String(format: "%\(f)f", self)
}
}
let someInt = 4, someIntFormat = "03"
println("Die Integer-Nummer \(someInt) formatiert mit \"\(someIntFormat)\" sieht aus wie \(someInt.format(someIntFormat))")
// Die Integer-Nummer 4 formatiert mit "03" sieht aus wie 004
let someDouble = 3.14159265359, someDoubleFormat = ".3"
println("Die Gleitkommazahl \(someDouble) formatiert mit \"\(someDoubleFormat)\" sieht aus wie \(someDouble.format(someDoubleFormat))")
// Die Gleitkommazahl 3.14159265359 formatiert mit ".3" sieht aus wie 3.142
Ich denke, das ist die Swift-ähnlichste Lösung, indem die Formatierungsoperationen direkt mit dem Datentyp verknüpft werden. Es könnte gut sein, dass es irgendwo bereits eine Bibliothek von Formatierungsoperationen gibt, oder vielleicht wird eine bald veröffentlicht. Beachten Sie, dass die Sprache noch in der Beta-Phase ist.
Die meisten Antworten hier sind gültig. Wenn Sie jedoch die Nummer oft formatieren werden, sollten Sie erwägen, die Float-Klasse zu erweitern, um eine Methode hinzuzufügen, die einen formatierten String zurückgibt. Siehe unten stehenden Beispielcode. Dieses erreicht das gleiche Ziel durch Verwendung eines Nummernformatters und einer Erweiterung.
extension Float {
func string(fractionDigits:Int) -> String {
let formatter = NSNumberFormatter()
formatter.minimumFractionDigits = fractionDigits
formatter.maximumFractionDigits = fractionDigits
return formatter.stringFromNumber(self) ?? "\(self)"
}
}
let myVelocity:Float = 12.32982342034
println("Die Geschwindigkeit beträgt \(myVelocity.string(2))")
println("Die Geschwindigkeit beträgt \(myVelocity.string(1))")
Die Konsole zeigt:
Die Geschwindigkeit beträgt 12.33
Die Geschwindigkeit beträgt 12.3
extension Float {
func string(fractionDigits:Int) -> String {
let formatter = NumberFormatter()
formatter.minimumFractionDigits = fractionDigits
formatter.maximumFractionDigits = fractionDigits
return formatter.string(from: NSNumber(value: self)) ?? "\(self)"
}
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.