将浮点数添加到十进制数

时间:2018-07-20 08:46:50

标签: ios swift

我有此代码:

var weightSum: Float = 3.14159
let weightPerPortionGrams: Decimal =  0.999999
weightSum = weightSum + (weightPerPortionGrams)

数字是示例。

我收到一个错误:

  

二进制运算符'+ ='不能应用于类型'Float'和'Decimal'。

有人知道如何解决吗?

4 个答案:

答案 0 :(得分:0)

这是因为变量weightSumweightPerPortionGrams具有不同的类型。幸运的是,您可以在Swift中转换这些变量。

因此,要执行此操作,应将weightPerPortionGrams的类型转换为weightSum的类型,以便两个变量都变为同一类型:

weightSum = weightSum + NSDecimalNumber(decimal: weightPerPortionGrams).floatValue

请注意,Decimal可能无法很好地处理浮点数。

您还可以进行额外的转换,以确保我们使用的是NSDecimalNumber而不是NSNumber的方法:

let double = NSDecimalNumber(decimal: weightPerPortionGrams).doubleValue
weightSum = weightSum + Float(double)

答案 1 :(得分:0)

要将Decimal转换为浮点数,您可以执行以下操作:

weightSum += Float(truncating: weightPerPortionGrams as NSNumber)

或者这个:

weightSum += (weightPerPortionGrams as NSNumber).floatValue

答案 2 :(得分:0)

Swift需要两个变量都具有相同的类型才能使用“ +”运算符,因此您需要将Decimal转换为Float类型,或者在相反之前进行求和他们:

weightPerPortionGramsFloat = (weightPerPortionGrams as NSNumber).floatValue

weightSumDecimal = (weightSum as NSNumber).decimalValue

答案 3 :(得分:0)

问候!

    func + (left: Float, right: Decimal) -> Float {
        return left + Float(right.description)!
    }

    var weightSum: Float = 3.14159
    let weightPerPortionGrams: Decimal =  0.999999

    weightSum = weightSum + weightPerPortionGrams

    print(weightSum)
    // prints 4.141589

希望有帮助!