System.FormatException: Input string was not in a correct format
Asked Answered
A

1

6
    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.

Ama answered 23/9, 2011 at 17:35 Comment(2)
What values are you inputting?Nunn
values within 0-10 like 4.5 or 5.5Ama
N
7

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))
Newtonnext answered 23/9, 2011 at 17:38 Comment(3)
yep, I just tried that actually.. and guess what, it works. I hate the swedish comma separation symbol now..Ama
TryParse takes in more parametres in its argument and since I'm a newbie in C# and not quite familiar with where TryParse then sends the result (since it returns a bool) I'll stick with Parse for now. "Receiving 2 return values" seems a bit over my head atm but I'll keep TryParse in mind for future use. Thanks.Ama
@Ryuji89 : see updted answer, EDIT partNewtonnext

© 2022 - 2024 — McMap. All rights reserved.