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

C#中字符串转double时结果为原数值10倍的问题求助

问题原因

这个异常本质是区域性数值分隔符不匹配导致的:
默认double.Parse()方法会读取当前操作系统的线程区域配置解析字符串,如果你的系统区域(比如西班牙语区、欧洲多数地区)配置的小数分隔符是逗号,、千位分隔符是.,输入的13.5中的.会被识别为千位分隔符直接忽略,最终解析结果就变成了135。

解决方法

有两种常用方案可选:

  • 强制指定固定的解析规则,不受系统区域影响:
    解析时传入固定区域性配置,始终将.识别为小数分隔符,修改代码如下:
    Console.WriteLine("Escriba la longitud:");
    string l = Console.ReadLine();
    // 新增指定InvariantCulture参数,强制用小数点作为小数分隔符
    double m = double.Parse(l, System.Globalization.CultureInfo.InvariantCulture);
    
    Console.WriteLine(m);
    
  • 适配当前系统的区域规则:
    按照你当前系统的小数分隔符输入数值即可,比如西语区域输入13,5替代13.5,即可得到正确的解析结果。

内容的提问来源于stack exchange,提问作者Felipe López

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:57:05