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

VS Code中运行C#计算器程序报错:小数输入格式不正确

解决C#计算器小数输入格式错误问题

问题原因

  • 系统区域设置冲突:中文操作系统默认用中文区域格式,小数点分隔符是逗号,如果你输入英文点号,Convert.ToDouble会因格式不匹配报错;反过来系统用点号但输入逗号也会出问题。
  • 缺乏输入验证:如果输入空值或非数字内容,直接调用Convert.ToDouble会直接抛出格式异常,没有容错机制。

解决方案

方案1:指定统一区域文化解析

通过指定InvariantCulture,强制解析时使用英文区域规则(小数点为点号),不管系统当前区域是什么,都能正确识别点号作为小数分隔符:

static void Main(string[] Args)
{
    Console.WriteLine("--------------basic calculator---------------");

    Console.Write("Enter a number : ");
    double num1 = Convert.ToDouble(Console.ReadLine(), System.Globalization.CultureInfo.InvariantCulture);
    Console.Write("Enter another number : ");
    double num2 = Convert.ToDouble(Console.ReadLine(), System.Globalization.CultureInfo.InvariantCulture);

    Console.WriteLine(num1 + num2);
}

方案2:添加输入验证,用更安全的解析方式

使用double.TryParse替代Convert.ToDouble,它不会直接抛出异常,而是返回解析是否成功,还能兼容更多数字格式(逗号或点号作为小数点),同时给用户错误提示:

static void Main(string[] Args)
{
    Console.WriteLine("--------------basic calculator---------------");

    double num1;
    while (true)
    {
        Console.Write("Enter a number : ");
        if (double.TryParse(Console.ReadLine(), System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out num1))
        {
            break;
        }
        Console.WriteLine("输入格式错误,请输入有效的数字(可包含小数)");
    }

    double num2;
    while (true)
    {
        Console.Write("Enter another number : ");
        if (double.TryParse(Console.ReadLine(), System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out num2))
        {
            break;
        }
        Console.WriteLine("输入格式错误,请输入有效的数字(可包含小数)");
    }

    Console.WriteLine($"{num1} + {num2} = {num1 + num2}");
}

说明

  • 方案1简单直接,适合跟着教程快速修复问题的场景。
  • 方案2更健壮,能处理各种无效输入,提升程序容错性和用户体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:40:13