我有此代码:
var weightSum: Float = 3.14159
let weightPerPortionGrams: Decimal = 0.999999
weightSum = weightSum + (weightPerPortionGrams)
数字是示例。
我收到一个错误:
二进制运算符'+ ='不能应用于类型'Float'和'Decimal'。
有人知道如何解决吗?
答案 0 :(得分:0)
这是因为变量weightSum
和weightPerPortionGrams
具有不同的类型。幸运的是,您可以在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
希望有帮助!