You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 09:05:14