Como faço para arredondar currentRatio
para duas casas decimais?
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
Como faço para arredondar currentRatio
para duas casas decimais?
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = "\(currentRatio)"
Respostas:
Use uma string de formato para arredondar até duas casas decimais e converter double
em String
:
let currentRatio = Double (rxCurrentTextField.text!)! / Double (txCurrentTextField.text!)!
railRatioLabelField.text! = String(format: "%.2f", currentRatio)
Exemplo:
let myDouble = 3.141
let doubleStr = String(format: "%.2f", myDouble) // "3.14"
Se você quiser arredondar sua última casa decimal, pode fazer algo assim (obrigado Phoen1xUK):
let myDouble = 3.141
let doubleStr = String(format: "%.2f", ceil(myDouble*100)/100) // "3.15"
(Swift 4.2 Xcode 11) Extensão simples de usar: -
extension Double {
func round(to places: Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}
Usar:-
if let distanceDb = Double(strDistance) {
cell.lblDistance.text = "\(distanceDb.round(to:2)) km"
}
func round(to places: Int) -> Double {
Atualizado para SWIFT 4 e a resposta adequada para a pergunta
Se você quiser arredondar para 2 casas decimais você deve multiplicar por 100, depois arredondar e dividir por 100
var x = 1.5657676754
var y = (x*100).rounded()/100
print(y) // 1.57
Considere o uso de NumberFormatter para essa finalidade, ele fornece mais flexibilidade se você quiser imprimir o sinal de porcentagem da proporção ou se você tiver coisas como moeda e 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
Adicionando a resposta acima, se quisermos formatar Double várias vezes, podemos usar a extensão de protocolo de Double como abaixo:
extension Double {
var dollarString:String {
return String(format: "$%.2f", self)
}
}
let a = 45.666
print(a.dollarString) //will print "$45.67"
Apenas uma resposta rápida para iniciantes como eu:
Você pode tornar as outras respostas super fáceis de implementar usando uma função com uma saída . Por exemplo
func twoDecimals(number: Float) -> String{
return String(format: "%.2f", number)
}
Dessa forma, sempre que você quiser levar um valor para 2 casas decimais, basta digitar
twoDecimals (' Seu número aqui ')
...
Simples!
Ps Você também pode fazer com que ele retorne um valor Float , ou qualquer coisa que você quiser, convertendo-o novamente após a conversão de String da seguinte maneira:
func twoDecimals(number: Float) -> Float{
let stringValue = String(format: "%.2f", number)
return Float(stringValue)!
}
Espero que ajude.
se você der 234,545332233, terá 234,54
let textData = Double(myTextField.text!)!
let text = String(format: "%.2f", arguments: [textData])
mylabel.text = text
Apenas uma linha de código:
let obj = self.arrayResult[indexPath.row]
let str = String(format: "%.2f", arguments: [Double((obj.mainWeight)!)!])
currentRatio
para duas casas decimais ou sempre arredondar para cima? Ex: você quer 3,141 -> 3,14 ou 3,141 -> 3,14?