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

C# 如何为数字字符串插入小数点保留两位小数 解决计算结果异常问题

问题原因

C#中两个int类型值执行除法时默认走整数截断逻辑,会直接丢弃小数部分,你代码里attrval是int类型、100也是int类型,所以504 / 100的运算结果直接是int类型的5,后续格式化自然只能得到5.00的结果。

解决方案

只需要把除法的其中一个操作数改为非整数类型,让运算走浮点数/高精度小数除法即可,推荐用decimal类型处理金额类高精度要求的场景,避免浮点精度丢失:

  • 方案1:用decimal后缀标记除数
int attrval = Convert.ToInt32("000504");
// 100后面加m表示这是decimal类型的数值,运算时attrval会自动隐式转为decimal
decimal val1 = attrval / 100m;  
string val2 = String.Format("{0:0.00}", attrval / 100m);
// 也可以用更简洁的字符串插值写法
string val3 = $"{attrval / 100m:0.00}";

运行后val1为5.04,val2和val3均为字符串"5.04",符合预期。

  • 方案2:显式转换被除数为decimal,效果一致
int attrval = Convert.ToInt32("000504");
decimal val1 = (decimal)attrval / 100;
string val2 = val1.ToString("0.00");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:45:03