在swift中以3位数精度舍入double值时出错3

问题描述:

我正在使用此扩展名以3位数精度舍入double值。在swift中以3位数精度舍入double值时出错3

extension Double { 
    var DigitsPrecision: String { 

     return String(Double(round(1000*self)/1000)) //round the double with 3 digits precision 
    } 
} 

它完美地工作在迅速2.2,但是当我迁移我的项目SWIFT 3.0其抛出这个错误

Cannot use mutating member on immutable value: 'self' is immutable 

如何解决这个问题?

+1

[Xcode中8 Beta 4的斯威夫特3 - “圆” 的行为改变]的可能的复制(http://stackoverflow.com/questions/38767635/xcode-8-beta-4-swift-3-round-behavior-changed) – Hamish

我建议你使用新rounded方法上本身的价值:

extension Double { 
    var digitsPrecision: String { 
     return String(Double((1000 * self).rounded()/1000)) 
    } 
} 
+0

谢谢。有效。 – Poles

+0

不客气。 – Moritz