¿Cómo redondeo currentRatio
a dos lugares decimales?
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
¿Cómo redondeo currentRatio
a dos lugares decimales?
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
Respuestas:
Use una cadena de formato para redondear hasta dos lugares decimales y convertir el double
a String
:
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = String(format: "%.2f", currentRatio)
Ejemplo:
let myDouble = 3.141
let doubleStr = String(format: "%.2f", myDouble) // "3.14"
Si desea redondear su último decimal, puede hacer algo como esto (gracias Phoen1xUK):
let myDouble = 3.141
let doubleStr = String(format: "%.2f", ceil(myDouble*100)/100) // "3.15"
(Swift 4.2 Xcode 11) Extensión fácil de usar: -
extension Double {
func round(to places: Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}
Utilizar:-
if let distanceDb = Double(strDistance) {
cell.lblDistance.text = "\(distanceDb.round(to:2)) km"
}
func round(to places: Int) -> Double {
Actualizado a SWIFT 4 y la respuesta adecuada a la pregunta
Si desea redondear hasta 2 lugares decimales, debe multiplicar por 100, luego redondearlo y dividirlo por 100.
var x = 1.5657676754
var y = (x*100).rounded()/100
print(y) // 1.57
Considere usar NumberFormatter para este propósito, brinda más flexibilidad si desea imprimir el signo de porcentaje de la relación o si tiene cosas como moneda y números grandes.
let amount = 10.000001
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
let formattedAmount = formatter.string(from: amount as NSNumber)!
print(formattedAmount) // 10
Agregando a la respuesta anterior si queremos formatear Double varias veces, podemos usar la extensión de protocolo de Double como se muestra a continuación:
extension Double {
var dollarString:String {
return String(format: "$%.2f", self)
}
}
let a = 45.666
print(a.dollarString) //will print "$45.67"
Solo una rápida respuesta de seguimiento para novatos como yo:
Puede hacer que las otras respuestas se puedan implementar muy fácilmente utilizando una función con una salida . P.ej
func twoDecimals(number: Float) -> String{
return String(format: "%.2f", number)
}
De esta manera, siempre que desee tomar un valor con 2 decimales, simplemente escriba
twoDecimals (' Su número aquí ')
...
Simples!
Ps También puede hacer que devuelva un valor flotante , o cualquier cosa que desee, convirtiéndolo nuevamente después de la conversión de cadena de la siguiente manera:
func twoDecimals(number: Float) -> Float{
let stringValue = String(format: "%.2f", number)
return Float(stringValue)!
}
Espero que ayude.
si le da 234,545332233 le dará 234,54
let textData = Double(myTextField.text!)!
let text = String(format: "%.2f", arguments: [textData])
mylabel.text = text
Solo una línea de código:
let obj = self.arrayResult[indexPath.row]
let str = String(format: "%.2f", arguments: [Double((obj.mainWeight)!)!])
currentRatio
a dos lugares decimales o siempre redondear hacia arriba? Ej .: ¿quieres 3.141 -> 3.14 o 3.141 -> 3.14?