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
相关产品推荐
相关产品推荐

