"C" Kommastellen abschneiden
charmin 05.12.2014 - 12:33 6194 6
charmin
Super Moderator10x
|
pinschig, ich weiss fprintf(stdout, "Ihr Betrag in US-Dollar [USD]: %.2f\n", USD);
USD*=100;
int USD2=USD;
USD= USD2/100;
fprintf(stdout, "Das sind %.0f Dollar und %0.2f Cent!", USD, USD);
möchte gerne den Betrag extra in Dollar und extra in cent ausgeben. warum schneidet er mir nach der typumwandlung und division von zb "255" durch 100 trotzdem dann die 55 weg und es kommt dann wieder 2.00 raus...? Und wie kann ich dann nur die "cent" ausgeben? %0.2f gibts anscheinend ned. tia!
Bearbeitet von charmin am 05.12.2014, 12:52
|
XeroXs
doh
|
Hmm.. Bin jetzt kein C Profi, aber ich seh da keine typumwandlung USD*=100; --> USD = 255*100 also 25500 int USD2=USD; --> USD2 = 25500 USD= USD2/100; --> USD = 25500/100 also 255 da passiert also für dein Beispiel eigentlich garnix.. Mit Kommazahlen siehts dann so aus: USD*=100; --> USD = 255,50*100 also 25550 int USD2=USD; --> USD2 = 2550 USD= USD2/100; --> USD = 25550/100 also 255,50
Bearbeitet von XeroXs am 05.12.2014, 12:43
|
Denne
Here to stay
|
USD ist ein Int-Wert, also nur ganze Zahlen. 255/100 = 2 Rest 55, ergo gibt die Rechnung einfach 2 aus, da der Rest abgeschnitten wird. Um an die 55 Cent zu gelangen, musst du eine Modulorechnung machen. fprintf(stdout, "Ihr Betrag in US-Dollar [USD]: %.2fn", USD);
USD*=100;
int USD2=USD;
USD= USD2/100;
int Cent = USD2 % 100;
fprintf(stdout, "Das sind %.0f Dollar und %.0f Cent!", USD, Cent);
So in der Art müsste es funktionieren. C ist schon ewig her und ich habs auf die Schnelle net getestet edit: @ XeroXs: ich glaube er bekommt als USD sowas wie "2,55" rein. Dann multipliziert er mit 100, damit er 255 erhält. Das sollte so schon funktionieren. Außer ich habe etwas falsch verstanden
|
charmin
Super Moderator10x
|
naja hast recht, is keine Typumwandlung, hab mich blöd ausgedrückt. er soll den float wert USD mal 100 in die int Variable USD2 lesen. das wären bei USD = 2.55 dann USD2 = 255, danach soll er die 255 durch 100 dividieren und in die variable USD als float speichern
|
AdRy
Auferstanden
|
danach soll er die 255 durch 100 dividieren und in die variable USD als float speichern Ist USD auch als float deklariert?
|
charmin
Super Moderator10x
|
Ist USD auch als float deklariert? int main (){
/*************************/
/*Ausgabe Programminfo */
/*************************/
fprintf(stdout, "EUR2USD - W\x84hrungsrechner zum Umrechnen von Euro auf US-Dollar\nVersion1.0");
fprintf(stdout, "\nAutor: Vorname Nachname, 3ABET, HTBLuVA ");
fprintf(stdout, "\nDatum: 2014-12-02\n");
/**************************/
/* Deklaration der */
/* Variablen. */
/**************************/
float EUR, USD;
/**************************/
/* Aufforderung den EUR- */
/* Betrag einzugeben. */
/**************************/
fprintf(stdout, "\nBitte geben sie ihren gew\x81nschten Betrag ein [EUR] ein: ");
/**************************/
/* Ueberpruefung der */
/* Eingabe ob ein */
/* Buchstabe */
/* eingegeben wurde. */
/**************************/
if (!fscanf(stdin, "%f", &EUR)) {
fprintf(stdout, "\nFehler: Sie haben keinen Betrag angegeben!\n");
return 0;
}
/**************************/
/* Berechnen des */
/* Umrechnungsbetrages */
/**************************/
USD = EUR * 1.2757;
/**************************/
/* Ausgabe des */
/* Ergebnisses. */
/**************************/
fprintf(stdout, "Ihr Betrag in US-Dollar [USD]: %.2f\n", USD);
USD*=100;
int USD2=USD;
USD= USD2/100;
fprintf(stdout, "Das sind %.0f Dollar und %0.2f Cent!", USD, USD);
/**************************/
/* Ende des Programms. */
/**************************/
return 0;
}
|
charmin
Super Moderator10x
|
USD ist ein Int-Wert, also nur ganze Zahlen. 255/100 = 2 Rest 55, ergo gibt die Rechnung einfach 2 aus, da der Rest abgeschnitten wird. Um an die 55 Cent zu gelangen, musst du eine Modulorechnung machen.
fprintf(stdout, "Ihr Betrag in US-Dollar [USD]: %.2fn", USD);
USD*=100;
int USD2=USD;
USD= USD2/100;
int Cent = USD2 % 100;
fprintf(stdout, "Das sind %.0f Dollar und %.0f Cent!", USD, Cent);
So in der Art müsste es funktionieren. C ist schon ewig her und ich habs auf die Schnelle net getestet
edit:
@ XeroXs: ich glaube er bekommt als USD sowas wie "2,55" rein. Dann multipliziert er mit 100, damit er 255 erhält. Das sollte so schon funktionieren. Außer ich habe etwas falsch verstanden danke, modulorechnung. so hats gefunzt
|