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

为何使用指定C#代码读取小数时抛出FormatException异常?

问题原因及解决办法

抛出FormatException的核心原因是输入格式与当前系统的区域文化设置不匹配,或者输入内容本身不是有效的小数格式,具体分两种情况:

1. 区域文化的小数分隔符差异

double.Parse默认遵循当前线程的区域文化规则解析输入。比如:

  • 中文(中国)区域系统默认用**句号(.)**做小数分隔符,若你输入了逗号分隔的小数(如3,14),就会解析失败;
  • 欧洲部分区域(如德国)默认用逗号做小数分隔符,输入3.14同样会触发异常。

2. 输入内容无效

如果输入包含非数字字符(正负号、合法小数分隔符除外),或者存在多个小数分隔符(如3.14.5),也会直接抛出格式异常。


解决办法

方法一:指定固定解析规则(推荐)

使用InvariantCulture强制以句号作为小数分隔符解析,不受系统区域影响:

double number = double.Parse(Console.ReadLine(), System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine($"{number:0.00}");

方法二:添加容错处理

用double.TryParse替代Parse,避免直接抛出异常,还能给用户错误提示:

if (double.TryParse(Console.ReadLine(), System.Globalization.CultureInfo.InvariantCulture, out double number))
{
    Console.WriteLine($"{number:0.00}");
}
else
{
    Console.WriteLine("输入格式错误,请输入有效的小数(如3.14)");
}

方法三:匹配系统区域格式

确保输入符合当前系统的小数分隔规则,比如中文系统输入3.14,欧洲区域系统输入3,14。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:02:05