Comment puis-je arrondir currentRatio
à deux décimales?
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
Utilisez une chaîne de format pour arrondir à deux décimales et convertir la double
en une String
:
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = String(format: "%.2f", currentRatio)
Exemple:
let myDouble = 3.141
let doubleStr = String(format: "%.2f", myDouble) // "3.14"
Si vous voulez arrondir votre dernière décimale, vous pouvez faire quelque chose comme ça (merci Phoen1xUK):
let myDouble = 3.141
let doubleStr = String(format: "%.2f", ceil(myDouble*100)/100) // "3.15"
Mis à jour pour Swift 4 et la réponse appropriée à la question
Si vous voulez arrondir à 2 décimales, vous devez multiplier par 100 puis arrondir et diviser par 100
var x = 1.5657676754
var y = (x*100).rounded()/100
print(y) // 1.57
En ajoutant à la réponse ci-dessus si nous voulons formater Double plusieurs fois, nous pouvons utiliser l'extension de protocole de Double comme ci-dessous:
extension Double {
var dollarString:String {
return String(format: "$%.2f", self)
}
}
let a = 45.666
print(a.dollarString) //will print "$45.67"
Envisagez d'utiliser NumberFormatter à cette fin. Cela vous donnera plus de flexibilité si vous souhaitez imprimer le signe de pourcentage du ratio ou si vous avez des éléments tels que la devise et des nombres élevés.
let amount = 10.000001
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
let formattedAmount = formatter.string(from: amount as NSNumber)!
print(formattedAmount) // 10
Le code pour les chiffres spécifiques après les décimales est:
var roundedString = String(format: "%.2f", currentRatio)
Ici, le% .2f demande au Swift d’arrondir ce nombre à 2 décimales.
(Swift 4.2 Xcode 10) Simple à utiliser Extension: -
extension Double {
func roundTo(places:Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}
Utilisation:-
if let distanceDb = Double(strDistance) {
cell.lblDistance.text = "\(distanceDb.roundTo(places:2)) km"
}
String(format: "%.2f", Double(round(1000*34.578)/1000))
Sortie: 34.58
Juste une seule ligne de code:
let obj = self.arrayResult[indexPath.row]
let str = String(format: "%.2f", arguments: [Double((obj.mainWeight)!)!])
si vous lui donnez 234.545332233, il vous donnera 234.54
let textData = Double(myTextField.text!)!
let text = String(format: "%.2f", arguments: [textData])
mylabel.text = text