swift xcode6 number-rounding

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)