输入字符串的格式不正确#2

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)


Ste*_*ens 5

你可能会以某种方式使用欧洲本地人.在一些国家.并且,数字是相反的.