Swift 快速浮点乘法错误

Swift 快速浮点乘法错误,swift,floating-point,operators,multiplication,Swift,Floating Point,Operators,Multiplication,此代码失败: let element: Float = self.getElement(row: 1, column: j) let multiplier = powf(-1, j+2)*element 出现此错误时: 游乐场执行失败::140:51:错误:无法使用类型为“(Float,Float)”的参数列表调用“*” 设乘数=powf(-1,j+2)*元素 请记住,这发生在该块中: for j in 0...self.columnCount { 其中,columnCount是一个浮点数。

此代码失败:

let element: Float = self.getElement(row: 1, column: j)
let multiplier = powf(-1, j+2)*element
出现此错误时:

游乐场执行失败::140:51:错误:无法使用类型为“(Float,Float)”的参数列表调用“*” 设乘数=powf(-1,j+2)*元素

请记住,这发生在该块中:

for j in 0...self.columnCount {
其中,
columnCount
是一个浮点数。而且,第一行确实执行,因此
getElement
方法确实返回一个浮点值


我对此完全感到困惑,因为我看不出它为什么不工作。

我在调用
powf()
时使用
Float(j)
而不是
j
解决了这个问题。显然,
j
不能隐式转换为浮点。

swift中没有隐式数字转换,因此在处理不同类型和/或预期类型与表达式结果不同时,必须进行显式转换

在您的情况下,
j
是一个
Int
,而
powf
需要一个
Float
,因此它必须按如下方式转换:

let multiplier = powf(-1, Float(j)+2)*element
请注意,
2
文本虽然通常被视为整数,但编译器会自动推断为
Float
类型,因此在这种情况下不需要显式转换