Swift 3迁移 - 双扩展舍入问题

时间:2016-09-15 13:43:20

标签: double rounding swift3 xcode8

我将代码库迁移到Swift 3,我遇到了一个无法解释或修复的编译问题。

我在Double扩展程序中有一种方法可将Double四舍五入到一定数量的数字:

public func roundToPlaces(places: Int) -> Double {
    let divisor = pow(10.0, Double(places))
    return round(self * divisor) / divisor
}

例如: 12.34567.roundToPlaces(2)应该返回12.35。但是,我收到此扩展中使用的round方法的编译问题。它说我Cannot use mutating member on immutable value: 'self' is immutable

compilation error image

关于这里发生了什么的任何想法?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:11)

我已经解决了这个问题。将round(self * divisor)更改为(self * divisor).rounded()可解决编译问题。