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

System.FormatException错误求助:字符串转整数格式异常

问题排查与解决思路
  • 报错根源:错误栈明确指向Int32.Parse,说明el.absoluteBoundingBox.x/y/width/height转成字符串后,无法被解析为整数。常见原因包括:这些数值是带小数的浮点数(如123.45),转字符串后包含小数点;或是生成的字符串为空、包含非数字字符。
  • 排除无关代码:你之前怀疑的string.Format语句和当前报错完全无关——那个语句里没有占位符,直接写字符串即可,但它并不是引发FormatException的原因。
  • 修复方案:
    • 若只需取整数部分,直接用Convert.ToInt32()处理数值,无需转字符串再解析:
      int val_0 = Convert.ToInt32(el.absoluteBoundingBox.x);
      int val_1 = Convert.ToInt32(el.absoluteBoundingBox.y);
      int val_2 = Convert.ToInt32(el.absoluteBoundingBox.width);
      int val_3 = Convert.ToInt32(el.absoluteBoundingBox.height);
      
    • 若需要四舍五入,先用Math.Round()处理再转整数:
      int val_0 = (int)Math.Round(el.absoluteBoundingBox.x);
      
    • 更安全的写法是用int.TryParse()避免崩溃,同时捕获无效情况:
      if (!int.TryParse(el.absoluteBoundingBox.x.ToString(), out int val_0))
      {
          // 处理解析失败逻辑,比如设置默认值或记录提示
          val_0 = 0;
          _list.Add("   -- ELEMENT jakis IS INVALID, PLEASE CONFIGURE IT PROPERLY");
      }
      
  • 额外注意:直接调用数值的ToString()可能因区域设置生成带逗号的小数(如部分欧洲地区用逗号代替小数点),也会导致解析失败。若必须转字符串再解析,建议指定不变文化信息:
    int val_0 = int.Parse(el.absoluteBoundingBox.x.ToString(CultureInfo.InvariantCulture));
    

内容的提问来源于stack exchange,提问作者Kuba Jeśko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:02:19