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

字符串转int报错‘输入格式不正确’,求计算场景下的解决办法

解决int.Parse转换报错:Input was not in a correct format

这个报错很常见,本质是你传入int.Parse()的字符串不是一个符合整数规范的有效输入——可能包含空格、非数字字符、小数点,或者是空/空字符串,甚至数据库返回的unit_quantity本身格式就有问题。

给你几个针对性的解决思路和改进代码:

1. 先清理输入,再用安全的转换方法

直接用int.Parse()太严格,一旦输入不符合要求就会抛出异常。推荐用int.TryParse(),它不会炸锅,还能告诉你转换是否成功,同时可以先把输入的前后空格去掉:

// 先清理输入,去掉前后空格
string unitQtyInput = TextboxunitQty.Text.Trim();
int qty;

// 尝试安全转换
if (int.TryParse(unitQtyInput, out qty))
{
    // 转换成功,执行计算
    double unitAmt = double.Parse(TextboxunitAmt.Text);
    double grandTotal = unitAmt * qty;
    TextboxCostPrice.Text = grandTotal.ToString();
}
else
{
    // 转换失败,给用户提示或者做默认处理
    MessageBox.Show("请输入有效的整数数量!");
    TextboxCostPrice.Text = "0";
}

2. 处理数据库返回的特殊格式

如果数据库里的unit_quantity是字符串但可能带小数点(比如存储的是"5.0"而不是"5"),那你需要先转成数值类型再转int:

string unitQtyInput = TextboxunitQty.Text.Trim();
double tempQty;
int qty;

if (double.TryParse(unitQtyInput, out tempQty))
{
    qty = (int)Math.Round(tempQty); // 或者直接截断:(int)tempQty,看业务需求
    // 后续计算逻辑...
    double unitAmt = double.Parse(TextboxunitAmt.Text);
    double grandTotal = unitAmt * qty;
    TextboxCostPrice.Text = grandTotal.ToString();
}
else
{
    MessageBox.Show("请输入有效的数量值!");
    TextboxCostPrice.Text = "0";
}

3. 额外的输入校验建议

  • 可以在前端给TextboxunitQty加输入限制,只允许输入数字,从源头避免无效输入
  • 如果数据库返回的unit_quantity可能是空值,记得先判断!string.IsNullOrEmpty(unitQtyInput)再做转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:28:54