Laden...

Int/Double Fehler bei Formelberechnung

Erstellt von An_Dre vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.374 Views
A
An_Dre Themenstarter:in
12 Beiträge seit 2018
vor 5 Jahren
Int/Double Fehler bei Formelberechnung

Hallo

hab nochmal eine Frage, ich hab eine Formel die ich berechnen möchte aber bekomme immer einen fehler aber kann das leider nicht ganz nach vollziehen.

private void text_grundumsatz_TextChanged(object sender, EventArgs e)
        {
            double a;
            double b;
            double c;
            

            a = double.Parse(text_gew.Text);
            b = double.Parse(text_grö.Text);
            c = double.Parse(text_alter.Text);
            double result = 66,47+(13,7*a)+(5*b)–(6,8*c);
            text_grundumsatz.Text = Convert.ToString(result);

        }

In der Formel werden die Zahlen mit Komma und das - angekreidet.

Fehler:

Fehlermeldung:
Zeile Schweregrad Code Beschreibung Projekt Datei Unterdrückungszustand
210 Fehler CS0019 Der +-Operator kann nicht auf Operanden vom Typ "int" und "(int, double)" angewendet werden.

Zeile Schweregrad Code Beschreibung Projekt Datei Unterdrückungszustand
210 Fehler CS0201 Nur assignment-, call-, increment-, decrement-, await- und new object-Ausdrücke können als Anweisung verwendet werden.

1
124 Beiträge seit 2012
vor 5 Jahren

Bei einem Double muss das Komma durch ein Punkt ersetzt werden.

Gruß Thomas

16.842 Beiträge seit 2008
vor 5 Jahren

Bei einem Double muss das Komma durch ein Punkt ersetzt werden.

Nein - zumindest nicht pauschal.
Man muss der Parse Methode einfach auch die CultureInfo mitgeben, die entscheidet ob es Punkt oder Komma ist - dafür ist sie da; vor allem bei UI Anwendungen.

double.Parse(text_gew.Text, Thread.CurrentThread.CurrentCulture);

bzw CurrentUICulture wenn man die System-Culture will bzw. CultureInfo.CurrentCulture
Ansonsten manuell eine übergeben.

Dass Anwendungen sich nicht an dieses Prinzip halten ist ein allgemeines Problem und absolute Bad Practise.

Aus meinem Alltag: ich hab mein PC grundsätzlich auf Englisch - mein deutsches Bankprogramm funktioniert aber nur auf einem PC, der auf Deutsch ist - weil manche Parse Methode korrekt und manche falsch implementiert wurden.
Wurde mir so auch nach meine Analyse bestätigt; wird aber seit 2 Jahren Meldung immer noch nicht addressiert.

4.942 Beiträge seit 2008
vor 5 Jahren

Abt, es geht hier um diese Zeile:

double result = 66,47+(13,7*a)+(5*b)–(6,8*c);

Und dort ist ja da Komma falsch (Dezimalzahlen werden im Code immer mit Punkt angegeben).

Und bei der Überladung double.Parse(string) wird automatisch die aktuelle Culture verwendet.

16.842 Beiträge seit 2008
vor 5 Jahren

.... da habt ihr recht.

A
An_Dre Themenstarter:in
12 Beiträge seit 2018
vor 5 Jahren

Oh super daran hab ich garnicht gedacht, vielen Dank. 😃
Werde das nachher gleichmal korrigieren.
LG