繁体   English   中英

在Swift中'float'不能转换为'UInt8'

[英]'Float' is not convertible to 'UInt8' in 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)

错误消息具有误导性,但问题是Swift不会进行隐式类型转换-只是将表达式的一部分提取出来:

r / n

r是浮点类型。 n是整数类型。 在C中,晋升规则将隐式地使n等于浮点数。 在Swift中不会发生这种情况。

您可能需要将所有整数类型显式转换为Float才能解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM