"C" Kommastellen abschneiden
charmin 05.12.2014 - 12:33 6381 6
charmin
Legend gone
|
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
Vereinsmitglieddoh
|
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
Legend gone
|
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
Legend gone
|
Ist USD auch als float deklariert? int main (){
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");
float EUR, USD;
fprintf(stdout, "\nBitte geben sie ihren gew\x81nschten Betrag ein [EUR] ein: ");
if (!fscanf(stdin, "%f", &EUR)) {
fprintf(stdout, "\nFehler: Sie haben keinen Betrag angegeben!\n");
return 0;
}
USD = EUR * 1.2757;
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);
return 0;
}
|
charmin
Legend gone
|
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
|