Rechenaufgabe bzw. Variablenproblem



  • Hallo,

    könnt ihr mir sagen warum das nicht funktioniert?

    int korrekte_produkte=20;
    double zs=((registrierte_produkte/100)*korrekte_produkte);
    
    		char *korrektproz; korrektproz = new char[80];
    		char korrektprozb[20];
    		_itoa( zs, korrektprozb, 10 );
    		strcat( korrektproz, korrektprozb );
    
    TextOut(hDC2,tabelle_x+472,tabelle_y+29+332,korrektprozb,strlen(korrektprozb));
    

    Ich dreh wirklich am Rad, weil mich mein vermeintliches Mathewissen im Stich lässt, denn mein Ergebnis ist immer 0.

    Jetzt ist die Frage:
    Wo ist das Problem?

    habe ich nen Variablenfehler oder spackt einfach nur itoa rum ... hatte mal gelesen, dass itoa wohl nicht immer 100%ig verlässlich ist.

    Also?

    Danke
    Mischu



  • Ist registrierte Produkte zufällig auch ein int? Wenn ja, dann vermute ich mal, dass die Division nicht korrekt funktioniert, weil der Computer das Ergebnis der Division auf einen int "zurechtschneidet" (sind ja nur ints beteiligt). Bei registrierte_produkte < 100 wird deshalb immer 0 rauskommen.
    Probier mal

    double zs=(((double)registrierte_produkte/100.0f)*korrekte_produkte);
    


  • genau das war es ... danke
    MISCHU

    P.S. Warum /100.0f ... was soll das .0f?



  • MISCHU schrieb:

    was soll das .0f?

    100 ist ein Ganzzahl, also macht der Computer eine Ganzahl division
    100.0f ist eine Kommazahl (Floating Point Zahl) also mach der Computer eine floating point division.



  • wobei das f für float steht, denn 100.0 ist ein double -> 100.0f ein float


Log in to reply