在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 } }