我在Swift中使用以下公式时收到与类型相关的错误('Float' is not convertible to 'UInt8'
)。虽然我看过有类似问题的帖子,但我似乎无法弄清楚为什么在这种情况下,首先会转换为UInt8,以及如何修复类型转换错误。我是该语言的新手。
func compoundInterest (principal p: Float, interestRate r: Float,
timesCompounded n: Int, years t: Int) -> Float {
return p * pow(1 + (r / n), n * t)
}
compoundInterest(principal: 150, interestRate: 0.05, timesCompounded: 2, years: 10)
答案 0 :(得分:5)
错误信息具有误导性但问题是Swift没有进行隐式类型转换 - 只是为了将表达式的一部分拉出来:
r / n
r
是浮点类型。 n
是整数类型。在C中,促销规则会隐含地将n
与一个浮点数进行对比。这在Swift中并不会发生。
您可能希望显式将所有整数类型强制转换为Float
以解决问题。