Liczba z przecinkiem lub kropką double.TryParse()

Odpowiedz Nowy wątek
2019-05-11 13:23
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.

A sprawdź sobie czym jest args gdy podasz 1,5 skorzystaj z debuggera - Visual Code 2019-05-11 13:42
Postaram się sprawdzić. - linuxf 2019-05-11 17:12

Pozostało 580 znaków

2019-05-11 15:50
GN

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


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

“Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.” ~ Eric S. Raymond
Dzięki za odpowiedź i propozycję zmiany. - linuxf 2019-05-11 17:10

Pozostało 580 znaków

2019-05-11 21:26
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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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