Kei*_*ane 13 .net c# double parsing
double temp;
temp = (double)Convert.ToDouble("1234.5678");
Run Code Online (Sandbox Code Playgroud)
嘿Lads和女士们,我不能为我的生活弄清楚为什么上面的行不起作用.上面的行给出了一个运行时错误,说明了;
mscorlib.dll中发生了System.FormatException类型的未处理异常
附加信息:输入字符串的格式不正确.
Mar*_*rio 23
据我所知,这些Convert方法使用当前的语言环境来进行此类转换.在这种情况下,我猜你当前的语言环境会将逗号作为小数点.尝试为您的应用程序设置当前区域设置或转换为使用点的某个语言/国家/地区(例如en_US).该方法应提供第二个可选参数,以提供IFormatProvider作为替代解决方案.
Vad*_*hev 21
为了将字符串转换为double而没有例外:
mscorlib.dll中发生了System.FormatException类型的未处理异常
附加信息:输入字符串的格式不正确.
通过提供第二个参数值CultureInfo.InvariantCulture使其对文化不敏感,例如:
double.Parse("1234.5678", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)
Bac*_*hor 10
第一个解决方案(如其他帖子中所述):
double temp = double.Parse("1234.5678", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
第二个解决方案 - 使其默认为当前线程:
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
double temp = double.Parse("1234.5678");
Run Code Online (Sandbox Code Playgroud)
第三种解决方案 - 使其默认为代码块:
var prevCurrentCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
...
double temp = double.Parse("1234.5678");
...
Thread.CurrentThread.CurrentCulture = prevCurrentCulture;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57106 次 |
| 最近记录: |