Swift浮点乘法错误

时间:2014-12-05 16:41:14

标签: 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)'的参数列表                       let multiplier = powf(-1,j + 2)* element

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

for j in 0...self.columnCount {

其中columnCount是Float。此外,第一行确实执行,因此getElement方法确实返回一个Float。

我完全对此感到困惑,因为我认为没有理由不这样做。

2 个答案:

答案 0 :(得分:2)

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

在您的情况下,jIntpowf需要Float,因此必须按以下方式进行转换:

let multiplier = powf(-1, Float(j)+2)*element

请注意,2文字虽然通常被视为整数,但会被编译器自动推断为Float类型,因此在这种情况下不需要显式转换。

答案 1 :(得分:0)

我在调用Float(j)时使用j代替powf()来解决此问题。显然,j不能隐式转换为Float。