Swift报错:Binary operator '+'无法应用于Double与String类型求助
问题解决:Swift中数值与格式化字符串相加的类型错误
错误原因
你遇到的报错*Binary operator '+' cannot be applied to operands of type 'Double' and 'String'*,本质是类型不兼容:
order.productTotal是数值类型(比如Double)fee.formatted(.currency(code: "GBP"))调用后返回的是字符串类型,无法直接和数值用+运算符相加
修正方案
应该先把两个数值相加得到总和,再对总和进行货币格式化,而不是格式化单个值后再相加。
修正后的关键代码
if isOn2 { Text("\((order.productTotal + fee).formatted(.currency(code: "GBP")))") .bold() }
完整修正代码
struct OrderView: View { @State private var isOn1 = false @State private var isOn2 = false // 假设order和fee为已定义的数值变量,示例如下 let order = Order(productTotal: 99.99) let fee = 10.0 var body: some View { HStack { Text("Grand total is :") .bold() Spacer() if isOn2 { Text("\((order.productTotal + fee).formatted(.currency(code: "GBP")))") .bold() } else { Text("\(order.productTotal.formatted(.currency(code: "GBP")))") .bold() } } .padding(5) } } // 补充Order结构体示例(若未定义) struct Order { let productTotal: Double }
注意事项
- 确保
order.productTotal和fee均为数值类型(如Double、Decimal),才能执行加法运算 - 数值运算与格式化操作要分离:先完成所有数值计算,再对最终结果做格式化处理,避免类型冲突
内容的提问来源于stack exchange,提问作者user21666271
相关产品推荐
相关产品推荐

