"C" Kommastellen abschneiden

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/c-kommastellen-abschneiden_241359/page_1 - zur Vollversion wechseln!


charmin schrieb am 05.12.2014 um 12:33

pinschig, ich weiss :rolleyes:

Code: C
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 :bash: und es kommt dann wieder 2.00 raus...?
Und wie kann ich dann nur die "cent" ausgeben? %0.2f gibts anscheinend ned.

tia!


XeroXs schrieb am 05.12.2014 um 12:41

Hmm..

Bin jetzt kein C Profi, aber ich seh da keine typumwandlung :confused:

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


Denne schrieb am 05.12.2014 um 12:42

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: C
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 :D


charmin schrieb am 05.12.2014 um 12:44

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 schrieb am 05.12.2014 um 12:45

Zitat von charmin
danach soll er die 255 durch 100 dividieren und in die variable USD als float speichern

Ist USD auch als float deklariert?


charmin schrieb am 05.12.2014 um 12:47

Zitat von AdRy
Ist USD auch als float deklariert?

Code: C
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 schrieb am 05.12.2014 um 12:52

Zitat von Denne
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: C
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 :D


danke, modulorechnung. so hats gefunzt :)




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025