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!
Sie können es (noch) nicht mit der Zeichenketteninterpolation machen. Ihre beste Option ist immer noch die Verwendung der NSString-Formatierung:
println(NSString(format:"%.2f", sqrt(2.0)))
Ausgehend von Python scheint eine vernünftige Syntax wie folgt zu sein:
@infix func % (value:Double, format:String) -> String {
return NSString(format:format, value)
}
Dann können Sie sie verwenden als:
M_PI % "%5.3f" // "3.142"
Sie können ähnliche Operatoren für alle numerischen Typen definieren, leider habe ich noch keine Möglichkeit gefunden, dies mit Generics zu tun.
Update Swift 5
Ab mindestens Swift 5 unterstützt String
direkt den format:
-Initializer, daher ist es nicht mehr notwendig, NSString
zu verwenden und das @infix
-Attribut ist nicht mehr erforderlich. Das bedeutet, dass die obigen Beispiele wie folgt geschrieben werden sollten:
println(String(format:"%.2f", sqrt(2.0)))
func %(value:Double, format:String) -> String {
return String(format:format, value)
}
Double.pi % "%5.3f" // "3.142"
Warum machst du es so kompliziert? Du kannst stattdessen dies verwenden:
import UIKit
let PI = 3.14159265359
round( PI ) // 3.0 auf die nächste Dezimalstelle gerundet
round( PI * 100 ) / 100 //3.14 auf die nächste Hunderstel gerundet
round( PI * 1000 ) / 1000 // 3.142 auf die nächste Tausendstel gerundet
Sieh es im Playground funktionieren.
PS: Lösung von: http://rrike.sh/xcode/rounding-various-decimal-places-swift/
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.