Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
552 views
in Technique[技术] by (71.8m points)

c# - System.FormatException: Input string was not in a correct format

    private void ReadUnitPrice()
    {
        Console.Write("Enter the unit gross price: ");
        unitPrice = double.Parse(Console.ReadLine());
    }

This should work, but I'm missing something obvious. Whenever I input a double it gives me the error: System.FormatException: Input string was not in a correct format. Note that 'unitPrice' is declared as a double.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

It could be that you're using wrong comma separation symbol or even made an other error whilst specifying double value. Anyway in such cases you must use Double.TryParse() method which is safe in terms of exception and allows specify format provider, basically culture to be used.

public static bool TryParse(
    string s,
    NumberStyles style,
    IFormatProvider provider,
    out double result
)

The TryParse method is like the Parse(String, NumberStyles, IFormatProvider) method, except this method does not throw an exception if the conversion fails. If the conversion succeeds, the return value is true and the result parameter is set to the outcome of the conversion. If the conversion fails, the return value is false and the result parameter is set to zero.

EDIT: Answer to comment

if(!double.TryParse(Console.ReadLine(), out unitPrice))
{
    // parse error
}else
{
   // all is ok, unitPrice contains valid double value
}

Also you can try:

double.TryParse(Console.ReadLine(), 
                NumberStyle.Float, 
                CultureInfo.CurrentCulture, 
                out unitPrice))

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...