Hallo, ich habe erst neu mit programmieren angefangen und bin noch viel am probieren und komme momentan nicht weiter und hoffe das vlt jemand eine Lösung für mein Problem hat.
Mein Code sieht wie folgt aus;
int Aroma = 0;
int Grundwert =0;
int mengeAroma =0;
int mengeBase =0;
Console.WriteLine("Gesammte Liquidmenge?");
Grundwert = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Wieviel % Armoa soll begemischt werden?");
Aroma = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(mengeAroma = Grundwert / 100 * Aroma );
Console.ReadLine();
Console.WriteLine(mengeBase = Grundwert - mengeAroma );
Console.ReadLine();
Mein Problem ist das nach der Eingabe des Aroma Anteils, eig das Ergebnis von Grundwert / 100 * Aroma kommen sollte, stattdessen spuckt er nach der Eingabe einfach nur meine Eingabe ohne Berechnung aus.
Wenn ich es als double probiere klappt es mit der rechnung. nur das er mir jetzt sagt das
Console.WriteLine(mengeAroma = (Grundwert/100* Aroma));
mengeAroma = Convert.ToDouble(Console.ReadLine());
das falsche format hat..
double Aroma = 0;
double Grundwert =0;
double mengeAroma =0;
double mengeBase =0;
Console.WriteLine("Gesammte Liquidmenge?");
Grundwert = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Wieviel % Aroma soll begemischt werden?");
Aroma = Convert.ToDouble(Console.ReadLine());
Console.WriteLine(mengeAroma = (Grundwert/100* Aroma));
mengeAroma = Convert.ToDouble(Console.ReadLine());
Console.WriteLine(mengeBase = (Grundwert - mengeAroma) );
mengeBase = Convert.ToDouble(Console.ReadLine());
Bitte verwende Code Tags
[Hinweis] Wie poste ich richtig?
Keiner hier hat Lust Plain-Text Code zu lesen.
Besten Dank!
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
mengeAroma = Grundwert / 100.0 * Aroma
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ich habe das ganze nur von einem Währungsrechner Beispiel abgeleitet deswegen in WriteLine 😕
Noch bin ich bei einer ganz einfacher Konsolen Anwendung die wie folgt aufgebaut ist,
Ich werde aufgefordert die gewünschte menge fertiges Liquid einzugeben
( und bestimme damit meinen Grundwert)
Dann werde ich aufgefordert die menge an aroma in % anzugeben
dann sollte der Grundwert / 100 * Aroma ausgerechnet werden was mittlerweile auch funktioniert
nur beim letzten schritt wo das Ergebnis von dieser Rechnung dem Grundwert abgezogen werden soll erscheint der fehler "Die Eingabezeichenfolge hat das falsche Format." in dem abschnitt mengeAroma = Convert.ToDouble(Console.ReadLine());
Hallo,
muss man immer durch ein Double-Teilen, wenn man keine Rundungsfehler haben will. Bei Int geht logischerweise immer was verloren.
Gerade bei double
gibt es Rundungsfehler*, während int
exakt ist.
Nur bei int
wird Ganzahldivision angewandt und für diese Aufgabe ist diese nicht das gewünscht, daher ist Abts Hinweis, dass mit double
gerechnet werden soll korrekt.
* bedingt durch die Natur der Sache, spezifiziert in IEEE 754
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Wenn es nur um ganze Zahlen geht, dann kann man die Rechenoperation auch umstellen:
int mengeAroma = Grundwert * Aroma / 100;
(die Benennung ist aber überarbeitungswürdig)
Weiterhin könnte man die Eingaben des Nutzers auch auf ihren Gültigkeitsbereich hin überprüfen und parsen lassen: https://www.dotnetperls.com/console-readline
Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉