我有这段代码:
var weightSum: Float = 3.14159
let weightPerPortionGrams: Decimal = 0.999999
weightSum = weightSum + (weightPerPortionGrams)
这些数字只是例子。
我遇到了一个错误:
二进制运算符“+ =”不能应用于“Float”和“Decimal”类型。
有人知道怎么解决吗?
weightSum
和weightPerPortionGrams
具有不同的类型。幸运的是,你可以在Swift中转换这些变量。weightPerPortionGrams
的类型转换为weightSum
的类型,这样两个变量就成为相同的类型:weightSum = weightSum + NSDecimalNumber(decimal: weightPerPortionGrams).floatValue
Decimal
可能无法很好地处理浮点数。NSDecimalNumber
的方法,而不是 NSNumber
的方法:let double = NSDecimalNumber(decimal: weightPerPortionGrams).doubleValue
weightSum = weightSum + Float(double)
将 Decimal
转换为浮点数,您可以采用以下任一方法:
weightSum += Float(truncating: weightPerPortionGrams as NSNumber)
或者这个:
weightSum += (weightPerPortionGrams as NSNumber).floatValue
Swift需要两个变量具有相同的类型才能使用“+”运算符,因此在对它们求和之前,您需要将Decimal
转换为Float
类型或者反过来:
weightPerPortionGramsFloat = (weightPerPortionGrams as NSNumber).floatValue
或者
weightSumDecimal = (weightSum as NSNumber).decimalValue
你好!
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
希望能对你有所帮助!