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

标签 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 方法的编译问题。这就是说我不能在不可变值上使用变异成员:“self”是不可变的

compilation error image

对这里发生的事情有什么想法吗?如何解决这个问题?

最佳答案

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

关于double - Swift 3 迁移 - 双扩展舍入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39512671/

相关文章:

c++ - 比较 (int)double 和 (int)int 时出现异常

SQL双重比较

c# - 将 double 与零进行比较时等于与 ==

php - 在 PHP 中舍入到最大千、百等

arrays - 根据数组中的值在字符串中搜索完全匹配

java - 可以将 float(或 double)设置为 NaN 吗?

c - 我需要让 Round Robin 工作,但它不能正常工作

.net - 谁能帮我获取 math.round() 以获得以下输出

macos - Cocoa CALayer 不显示 NSImage

ios - 如何在swift3中用时间减去日期