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

C#字符串转decimal却报DateTime转换错误,求助原因及解决办法

问题分析与解决方案

你遇到的问题属于错误提示与实际代码不匹配的情况,虽然当前代码只涉及decimal.Parse,但DateTime相关的错误提示大概率来自以下几种情况:

可能的原因及排查步骤

  • 代码上下文的异常混淆:项目中其他位置存在DateTime.Parse/Convert.ToDateTime的调用,该代码抛出的异常被上层错误关联到当前代码块。此时需要查看运行时调用栈,定位真正抛出异常的代码行。
  • 语法错误引发的奇怪行为:你提供的代码缺少分号,正确写法应为:
    string TolInf = "0.098";
    decimal TolInfNum = decimal.Parse(TolInf);
    
    语法错误可能导致编译或运行时的异常提示失真,先修正语法再测试。
  • 区域文化导致的转换异常(提示失真):如果当前线程的区域文化小数点分隔符不是.(例如部分欧洲国家使用,),decimal.Parse会失败,但错误提示可能被调试器误显示。可以尝试指定不变文化来规避:
    using System.Globalization;
    
    string TolInf = "0.098";
    decimal TolInfNum = decimal.Parse(TolInf, CultureInfo.InvariantCulture);
    
  • 编译缓存问题:清理项目的bin和obj文件夹,重新编译项目,避免旧缓存导致的错误提示混乱。
  • 改用安全转换方法排查:用decimal.TryParse替代Parse,可以明确是否是当前字符串的转换问题,同时避免抛出异常:
    string TolInf = "0.098";
    decimal TolInfNum;
    if (!decimal.TryParse(TolInf, out TolInfNum))
    {
        // 此处添加日志或输出,确认转换是否失败
        Console.WriteLine("数值转换失败");
    }
    

内容的提问来源于stack exchange,提问作者Pierre-François Didier

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:40:02