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

C#中double类型的Total与Tax相加时被转为字符串是什么原因

问题原因

C# 中+运算符遵循从左到右的运算顺序,且当字符串和其他类型做+运算时,会自动将其他类型隐式转换为字符串执行拼接操作。
你写的Console.WriteLine("Taxes: " + Total + Tax);执行逻辑如下:

  • 第一步执行"Taxes: " + Total:字符串和double类型相加,Total被隐式转为字符串,拼接得到新的字符串
  • 第二步执行上一步得到的字符串+ Tax:同样触发隐式转换,将Tax也转为字符串拼接,最终结果就是两个数值的字符串拼接效果,而非数值相加。

解决方法

  • 方法1:给数值运算部分加括号,提升运算优先级,让数值先执行加法再拼接字符串
Console.WriteLine("Taxes: " + (Total + Tax));
  • 方法2:使用字符串格式化语法,避免+运算符的歧义
    占位符写法:
Console.WriteLine("Taxes: {0}", Total + Tax);

字符串插值写法(C# 6及以上版本支持,更简洁):

Console.WriteLine($"Taxes: {Total + Tax}");

额外建议

涉及金额计算的场景不推荐使用double类型,double是二进制浮点类型,存在精度丢失风险,建议改用专门用于高精度数值/货币计算的decimal类型。

内容的提问来源于stack exchange,提问作者user10422085

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:06:07