Wie runde ich currentRatio
auf zwei Dezimalstellen auf?
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
Wie runde ich currentRatio
auf zwei Dezimalstellen auf?
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
Antworten:
Verwenden Sie eine Formatzeichenfolge, um auf zwei Dezimalstellen aufzurunden und die folgende double
zu konvertieren String
:
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = String(format: "%.2f", currentRatio)
Beispiel:
let myDouble = 3.141
let doubleStr = String(format: "%.2f", myDouble) // "3.14"
Wenn Sie Ihre letzte Dezimalstelle aufrunden möchten, können Sie Folgendes tun (danke Phoen1xUK):
let myDouble = 3.141
let doubleStr = String(format: "%.2f", ceil(myDouble*100)/100) // "3.15"
(Swift 4.2 Xcode 11) Einfach zu verwendende Erweiterung: -
extension Double {
func round(to places: Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}
Verwenden:-
if let distanceDb = Double(strDistance) {
cell.lblDistance.text = "\(distanceDb.round(to:2)) km"
}
func round(to places: Int) -> Double {
Aktualisiert auf SWIFT 4 und die richtige Antwort auf die Frage
Wenn Sie auf 2 Dezimalstellen aufrunden möchten, sollten Sie mit 100 multiplizieren, dann abrunden und dann durch 100 dividieren
var x = 1.5657676754
var y = (x*100).rounded()/100
print(y) // 1.57
Erwägen Sie die Verwendung von NumberFormatter für diesen Zweck. Es bietet mehr Flexibilität, wenn Sie das Prozentzeichen des Verhältnisses drucken möchten oder wenn Sie Dinge wie Währung und große Zahlen haben.
let amount = 10.000001
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
let formattedAmount = formatter.string(from: amount as NSNumber)!
print(formattedAmount) // 10
Wenn wir die obige Antwort hinzufügen und Double mehrmals formatieren möchten, können wir die Protokollerweiterung von Double wie folgt verwenden:
extension Double {
var dollarString:String {
return String(format: "$%.2f", self)
}
}
let a = 45.666
print(a.dollarString) //will print "$45.67"
String(format: "%.2f", Double(round(1000*34.578)/1000))
Ausgabe: 34,58
Nur eine kurze Antwort für Noobs wie mich:
Sie können die anderen Antworten sehr einfach umsetzbar machen, indem Sie eine Funktion mit einer Ausgabe verwenden . Z.B
func twoDecimals(number: Float) -> String{
return String(format: "%.2f", number)
}
Auf diese Weise geben Sie immer dann ein, wenn Sie einen Wert mit 2 Dezimalstellen erfassen möchten
twoDecimals (' Ihre Nummer hier ')
...
Simples!
Ps Sie können auch festlegen, dass ein Float- Wert oder ein beliebiger Wert zurückgegeben wird, indem Sie ihn nach der String-Konvertierung wie folgt erneut konvertieren:
func twoDecimals(number: Float) -> Float{
let stringValue = String(format: "%.2f", number)
return Float(stringValue)!
}
Hoffentlich hilft das.
Wenn Sie es 234.545332233 geben, erhalten Sie 234.54
let textData = Double(myTextField.text!)!
let text = String(format: "%.2f", arguments: [textData])
mylabel.text = text
Nur eine einzige Codezeile:
let obj = self.arrayResult[indexPath.row]
let str = String(format: "%.2f", arguments: [Double((obj.mainWeight)!)!])
currentRatio
auf zwei Dezimalstellen runden oder immer aufrunden? Beispiel: Wollen Sie 3.141 -> 3.14 oder 3.141 -> 3.14?