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

C#中字符串转decimal异常:14.80转为1480问题求助

解决字符串转Decimal时14.80变成1480的问题

嘿,这个问题我碰到过好多次,百分百是区域文化设置在搞鬼!

问题根源

默认情况下,decimal.Parse(或者你用的其他转换方法)会使用当前线程的区域文化规则来解析字符串。如果你的系统区域是用逗号作为小数点分隔符的(比如欧洲、南美很多地区),它会把字符串里的.当成千位分隔符直接忽略掉,这就导致14.80被错误解析成1480了。

解决方案

转换的时候明确指定不变区域性(InvariantCulture),强制让解析器把.识别为小数点。结合你的代码,修改后的转换逻辑可以这样写:

// 记得先引入命名空间
using System.Globalization;

// 在你创建对象的代码里,替换原来的转换逻辑
decimal price = decimal.Parse(splitStrings[0], CultureInfo.InvariantCulture);

如果想更安全(避免转换失败抛出异常),推荐用TryParse:

if (decimal.TryParse(splitStrings[0], NumberStyles.Number, CultureInfo.InvariantCulture, out decimal price))
{
    // 这里写转换成功后的对象创建逻辑
}
else
{
    // 处理字符串格式不正确的情况,比如日志记录或者提示
}

额外提醒

如果你的TXT文件里的数值格式是固定用.做小数点的,不管运行环境的区域设置,都一定要用InvariantCulture来解析,这样就能彻底避免这类跨区域的格式识别问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:18:52