在Swift四舍五入()

在玩耍的时候,我迅速地find了round()函数。 它可以使用如下:

round(0.8) 

如预期的那样将返回1。 这是我的问题:

我怎样才能迅速凑成千分之一?

我希望能够插入一个数字,比如0.6849,然后得到0.685。 round()如何做到这一点? 或者,不是,在这种情况下,有什么function呢?

你可以做:

 round(1000 * x) / 1000 
 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) 

Swift 3

round(someDecimal)是旧的C风格。 现在双打和浮动有一个内置的Swift函数。

 var x = 0.8 x.round() // x is 1.0 (rounds x in place) 

要么

 var x = 0.8 var y = x.rounded() // y is 1.0, x is 0.8 

有关如何使用不同舍入规则的更多详细信息,请在此处 (或此处 )查看我的答案更完整的答案 。

正如其他答案所指出的,如果你想回合到千分之一,那么在你回合之前,暂时乘以1000

这是一个办法。 你可以很容易地做到这一点Float ,或可能使其通用,所以这是任何这些。

 public extension CGFloat { func roundToDecimals(decimals: Int = 2) -> CGFloat { let multiplier = CGFloat(10^decimals) return round(multiplier * self) / multiplier } } 

这将不受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 } }