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

C#使用double.Parse读取控制台输入报System.FormatException错误如何解决

问题原因
  • 核心触发原因:double.Parse默认采用当前操作系统的区域文化规则解析字符串,若你的系统区域设置中小数分隔符不是.(例如德语、法语等区域默认使用逗号,作为小数分隔符),输入25.5这类带点的浮点数就会触发格式不匹配异常。
  • 其他可能原因:输入携带多余的前后空格、输入为空、输入混入非数字字符也会触发该异常。
解决方案

方案1:固定使用不变文化解析(最通用,适配带.的浮点数输入)

指定解析时使用不随系统区域变化的CultureInfo.InvariantCulture,保证.始终被识别为小数分隔符,同时添加Trim()处理前后空格:

using System.Globalization; // 需要额外引入该命名空间

double[] milad = new double[5];
for (int i = 0; i < milad.Length; i++)
{
    milad[i] = double.Parse(Console.ReadLine().Trim(), CultureInfo.InvariantCulture);
}

方案2:使用TryParse做容错处理,避免程序直接崩溃

如果要兼容用户输入错误的场景,改用double.TryParse做合法性校验,解析失败时提示重新输入:

using System.Globalization;

double[] milad = new double[5];
for (int i = 0; i < milad.Length; i++)
{
    string input = Console.ReadLine().Trim();
    // 解析失败循环提示重新输入
    while (!double.TryParse(input, NumberStyles.Float, CultureInfo.InvariantCulture, out milad[i]))
    {
        Console.WriteLine("输入格式错误,请输入以.为小数分隔符的合法浮点数,重新输入:");
        input = Console.ReadLine().Trim();
    }
}

方案3:适配当前系统区域规则

如果不需要跨区域运行,也可以按照当前系统的小数分隔符规则输入,例如系统默认分隔符为逗号时,输入25,5即可正常解析。

内容的提问来源于stack exchange,提问作者Milad-sh

相关产品推荐
方舟 Agent Plan

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

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