Input string was not in a correct format #2

心已入冬 提交于 2019-12-28 04:23:08

问题


double temp;
temp = (double)Convert.ToDouble("1234.5678");

Hey Lads and Ladies, I can't for the life of me figure out why the above line isn't working. The above line gives me a runtime error that says;

An unhandled exception of type System.FormatException occurred in mscorlib.dll

Additional information: Input string was not in a correct format.


回答1:


As far as I know the Convert methods use the current locale to do such conversions. In this case I'd guess your current locale would expect a comma as decimal point. Try to set the current locale for your application or the conversion to some language/country where dots are used (e.g. en_US). The method should provide a second optional parameter to provide a IFormatProvider as an alternative solution.




回答2:


In order to convert string to double without an exception:

An unhandled exception of type System.FormatException occurred in mscorlib.dll

Additional information: Input string was not in a correct format.

make it culture-insensitive by providing second parameter value CultureInfo.InvariantCulture, for example:

double.Parse("1234.5678", CultureInfo.InvariantCulture) 



回答3:


first solution (as mentioned in other posts):

double temp = double.Parse("1234.5678", CultureInfo.InvariantCulture);

second solution - make it default to current thread:

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
double temp = double.Parse("1234.5678");

third solution - make it default to block of code:

var prevCurrentCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
...
double temp = double.Parse("1234.5678");
...
Thread.CurrentThread.CurrentCulture = prevCurrentCulture;



回答4:


You may be somehow using a european local. In some countries the . and , in numbers is reversed.




回答5:


Hi as Mario says you must parse it taking into account the regional settings.

double temp = double.Parse("1234.5678", System.Globalization.CultureInfo.CurrentCulture);

Regards.




回答6:


Check your regional settings. Your decimal symbol needs to be ".".




回答7:


double temp = double.Parse("1234,5678");



回答8:


I recommend you use TryParse instead, so you don't need to handle parsing exceptions.

double temp = 0;
if (double.TryParse("123.456", out temp)
{
    Console.WriteLine(string.Format("Parsed temp: {0}", temp);
}
else
{
    Console.WriteLine("Input value was not able to be parsed.");
}



回答9:


I don't see any problem with the above code.it works fine and prints the value 1234.5678. I have tried it in VS2008. Probably, something to do with locale settings on your machine.




回答10:


I found the problem when you let the text box empty then this error occurs so try this one to handle it.

An unhandled exception of type System.FormatException occurred in mscorlib.dll Additional information: Input string was not in a correct format.

if (!string.IsNullOrEmpty(Txt1.Text)) {int _qty = (int)Convert.ToInt32(Txt1.Text);}


来源:https://stackoverflow.com/questions/5275380/input-string-was-not-in-a-correct-format-2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!