【问题标题】:Swift float multiplication errorSwift浮点乘法错误
【发布时间】:2014-12-05 16:41:14
【问题描述】:

此代码失败:

let element: Float = self.getElement(row: 1, column: j)
let multiplier = powf(-1, j+2)*element

出现此错误:

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

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

for j in 0...self.columnCount {

其中columnCount 是一个浮点数。另外,第一行确实执行了,所以getElement 方法确实返回了一个浮点数。

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

【问题讨论】:

    标签: swift floating-point operators multiplication


    【解决方案1】:

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

    在您的情况下,jInt,而 powf 需要 Float,因此必须按如下方式转换:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2019-12-14
        • 2021-06-15
        • 1970-01-01
        • 2014-02-14
        • 2011-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多