Liczba z przecinkiem lub kropką double.TryParse()

0

Cześć. Napisałem prosty program mnożący kilka liczb, które podawane są jako argumenty programu. Korzystam z NET Core 2.2.203.

Chciałbym zapytać o różnicę pomiędzy wartością liczbową z kropką i taką podaną z przecinkiem. Przykładowo jeśli uruchamiam program podając liczby z kropkami:

$ dotnet run 1.5 1
Result: 1,5

A w przypadku, gdy liczba będzie miała przecinek:

$ dotnet run 1,5 1
Result: 15

Mógłby ktoś wyjaśnić o co chodzi?

Metoda parsująca argumenty:

static double[] ParseArgs(string[] args)
{
    double value = 0;
    List<double> values = new List<double>();

    foreach (string arg in args)
    {
        if (double.TryParse(arg, NumberStyles.Any, CultureInfo.InvariantCulture, out value))
        {
            values.Add(value);
        }
    }

    return values.ToArray();
}

Z góry dziękuję za wszelkie wyjaśnienia.

1

Przecinek jest pomijany i to tyle.
Możesz zawsze zamieniać przecinki na kropki:

if (double.TryParse(arg.Replace(',', '.'), NumberStyles.Any, CultureInfo.InvariantCulture, out value))
0

Tak wygląda w debuggerze dla ciekawskich (może jakiemuś początkującemu się przyda). Myślę, że wątek można zamknąć chyba, że ktoś jeszcze chciałby coś od siebie dodać. Jeszcze raz dzięki za pomoc.

debugger.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1