URL: https://www.overclockers.at/coding-stuff/c-kommastellen-abschneiden_241359/page_1 - zur Vollversion wechseln!
pinschig, ich weiss
Code: Cfprintf(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);
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
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.
Code: Cfprintf(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);
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
Zitat von charmindanach soll er die 255 durch 100 dividieren und in die variable USD als float speichern
Zitat von AdRyIst USD auch als float deklariert?
Code: Cint 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; }
Zitat von DenneUSD 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.Code: Cfprintf(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
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025