Come faccio ad arrotondare fino currentRatio
a due cifre decimali?
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
Come faccio ad arrotondare fino currentRatio
a due cifre decimali?
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
Risposte:
Utilizza una stringa di formato per arrotondare per eccesso a due cifre decimali e converti il double
in String
:
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = String(format: "%.2f", currentRatio)
Esempio:
let myDouble = 3.141
let doubleStr = String(format: "%.2f", myDouble) // "3.14"
Se vuoi arrotondare la tua ultima cifra decimale, potresti fare qualcosa del genere (grazie Phoen1xUK):
let myDouble = 3.141
let doubleStr = String(format: "%.2f", ceil(myDouble*100)/100) // "3.15"
(Swift 4.2 Xcode 11) Estensione semplice da usare: -
extension Double {
func round(to places: Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}
Uso:-
if let distanceDb = Double(strDistance) {
cell.lblDistance.text = "\(distanceDb.round(to:2)) km"
}
func round(to places: Int) -> Double {
Aggiornato a SWIFT 4 e la risposta corretta alla domanda
Se si desidera arrotondare fino a 2 cifre decimali, moltiplicare per 100, quindi arrotondarlo e quindi dividerlo per 100
var x = 1.5657676754
var y = (x*100).rounded()/100
print(y) // 1.57
Considera l'utilizzo di NumberFormatter per questo scopo, fornisce maggiore flessibilità se vuoi stampare il segno di percentuale del rapporto o se hai cose come valuta e numeri grandi.
let amount = 10.000001
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
let formattedAmount = formatter.string(from: amount as NSNumber)!
print(formattedAmount) // 10
Aggiungendo alla risposta sopra se vogliamo formattare Double più volte, possiamo usare l'estensione del protocollo di Double come di seguito:
extension Double {
var dollarString:String {
return String(format: "$%.2f", self)
}
}
let a = 45.666
print(a.dollarString) //will print "$45.67"
Solo una rapida risposta di follow-up per niubbi come me:
Puoi rendere le altre risposte facilmente implementabili utilizzando una funzione con un output . Per esempio
func twoDecimals(number: Float) -> String{
return String(format: "%.2f", number)
}
In questo modo, ogni volta che vuoi prendere un valore con 2 cifre decimali devi semplicemente digitare
twoDecimals (" Il tuo numero qui ")
...
Semplici!
Ps Potresti anche fare in modo che restituisca un valore Float , o qualsiasi cosa tu voglia, convertendolo di nuovo dopo la conversione della stringa come segue:
func twoDecimals(number: Float) -> Float{
let stringValue = String(format: "%.2f", number)
return Float(stringValue)!
}
Spero possa aiutare.
se lo dai 234,545332233 ti darà 234,54
let textData = Double(myTextField.text!)!
let text = String(format: "%.2f", arguments: [textData])
mylabel.text = text
Solo una singola riga di codice:
let obj = self.arrayResult[indexPath.row]
let str = String(format: "%.2f", arguments: [Double((obj.mainWeight)!)!])
currentRatio
a due cifre decimali o arrotondare sempre per eccesso? Es: vuoi 3.141 -> 3.14 o 3.141 -> 3.14?