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.
Bei einem Double muss das Komma durch ein Punkt ersetzt werden.
Gruß Thomas
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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.
.... da habt ihr recht.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Oh super daran hab ich garnicht gedacht, vielen Dank. 😃
Werde das nachher gleichmal korrigieren.
LG