'浮动'不能转换为' UInt8'在斯威夫特

时间:2014-08-03 00:40:29

标签: ios xcode swift

我在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)

1 个答案:

答案 0 :(得分:5)

错误信息具有误导性但问题是Swift没有进行隐式类型转换 - 只是为了将表达式的一部分拉出来:

r / n

r是浮点类型。 n是整数类型。在C中,促销规则会隐含地将n与一个浮点数进行对比。这在Swift中并不会发生。

您可能希望显式将所有整数类型强制转换为Float以解决问题。