我正在尝试创建一个计算并返回复利的函数。变量具有不同的数据类型。每当我运行程序时,都会出现错误initializer 'init(_:)' requires that 'Decimal' conform to 'BinaryInteger'
。以下是我的代码:
import Foundation
class Compound{
var p:Double
var t:Int
var r:Double
var n:Int
var interest:Double
var amount:Double
init(p:Double,t:Int,r:Double,n:Int){
self.p = p
self.t = t
self.r = r
self.n = n
}
func calculateAmount() -> Double {
amount = p * Double(pow(Decimal(1 + (r / Double(n))),n * t))
return amount
}
}
错误:
error: initializer 'init(_:)' requires that 'Decimal' conform to 'BinaryInteger'
amount = p * Double(pow(Decimal(1 + (r / Double(n))),n * t))
^
在查看了类似的问题后,我也尝试了以下技术,但仍然遇到相同的错误
func calculateAmount() -> Double {
let gg:Int = n * t
amount = p * Double(pow(Decimal(1 + (r / Double(n))),Int(truncating: gg as NSNumber) ))
return amount
}
如何解决这个问题?
答案 0 :(得分:1)
考虑到要返回Double,使用Double func pow(_: Double, _: Double) -> Double
而不是使用Decimal func pow(_ x: Decimal, _ y: Int) -> Decimal
会更容易。
@discardableResult
func calculateAmount() -> Double {
amount = p * pow(1 + (r / Double(n)), Double(n) * Double(t))
return amount
}