Heute habe ich mein erstes C-Programm geschafft!
Jedoch bleibt ein Problem ungelöst, das ich als Anfänger nicht verstehen kann und um dessen Lösung ich bitte.
Im flogenden Programm entsteht ein Problem mit Fließkommazahlen in float.
Die Ein- und Ausgabezahlen werden zufälligerweise verändert.
Bei der Ausführung sieht es so aus:
Meine Fragen sind:
Warum ist der durch scanf() eingegebene Wert 333.329987 und nicht 333.330000?
Warum ist der gerundete Wert 166.660004 und nicht 166.660000?
Wie lässt sich das Problem lösen?
Der Code:
Code: Alles auswählen
#include <stdio.h>
void Umrechnung();
float Runden001(float);
int main()
{
int eingabe=0;
printf("Das Programm zur Umrechnung DM - Euro.\n\n");
do
{
Umrechnung();
printf("Geben Sie \"1\" ein, um noch eine Umrechnung zu machen.\n");
printf("Geben Sie \"0\", um das Programm zu beenden: ");
scanf("%d", &eingabe);
}
while(eingabe!=0);
return 0;
}
void Umrechnung ()
{
float DMBetrag=0, EuroBetrag=0;
printf("\nGeben Sie den Betrag in DM ein: ");
scanf("%f", &DMBetrag);
EuroBetrag=(DMBetrag/2);
printf("\n%f DM entsprechen %f Euro.\n\n", DMBetrag, Runden001(EuroBetrag));
}
float Runden001(float zahl)
{
float ergebnis=(((float)((int)((zahl+0.005)*100)))/100);
return ergebnis;
}