Redondeo en Swift con redondo()
xcode6 number-rounding (6)
Aquí hay una forma de hacerlo. Podrías hacer esto fácilmente para Float
, o probablemente hacerlo genérico, así que es para cualquiera de esos.
public extension CGFloat {
func roundToDecimals(decimals: Int = 2) -> CGFloat {
let multiplier = CGFloat(10^decimals)
return round(multiplier * self) / multiplier
}
}
Mientras jugaba, encontré la función round () en swift. Se puede utilizar de la siguiente manera:
round(0.8)
Que devolverá 1, como se esperaba. Aquí está mi pregunta:
¿Cómo redondear por milésimas en veloz?
Quiero poder ingresar un número, digamos 0.6849, y recuperar 0.685. ¿Cómo hace round () esto? O, ¿no es así, en qué caso, qué función cumple?
Esto redondeará a cualquier valor no limitado por potencias de 10.
extension Double {
func roundToNearestValue(value: Double) -> Double {
let remainder = self % value
let shouldRoundUp = remainder >= value/2 ? true : false
let multiple = floor(self / value)
let returnValue = !shouldRoundUp ? value * multiple : value * multiple + value
return returnValue
}
}
Swift 4:
(x/1000).rounded()*1000
Tu puedes hacer:
round(1000 * x) / 1000
Swift 3
El round(someDecimal)
es el antiguo estilo C Dobles y flotadores tienen una función Swift incorporada ahora.
var x = 0.8
x.round() // x is 1.0 (rounds x in place)
o
var x = 0.8
var y = x.rounded() // y is 1.0, x is 0.8
Vea mi respuesta más completa aquí (o here ) para obtener más detalles sobre cómo se pueden usar las diferentes reglas de redondeo .
Como han señalado otras respuestas, si desea redondear a la milésima, entonces multiplique temporalmente por 1000
antes de redondear.
func round(value: Float, decimalPlaces: UInt) {
decimalValue = pow(10, decimalPlaces)
round(value * decimalValue) / decimalValue
}
…
func round(value: CGFloat, decimalPlaces: UInt)
func round(value: Double, decimalPlaces: UInt)
func roundf(value: Float, decimalPlaces: UInt)