INT/INT teilen, aber Dezimalzahl erhalten, wie?



  • Ich habe in C folgendes gemacht: 3 INT's definiert. z.B.

    int x
    int y
    int erg

    erg=x/y

    da spuckt er mir eine INT aus. Ich will aber eine Dezimalzahl erhalten.
    Also bei 5/2 soll er mir 2,5 ausgeben und NICHT 2.

    Wie müsste ich das machen?



  • Naja, erstmal braucht die Ergebnisvariable natürlich 'nen passenden Typ. Und dann eine der beiden Variablen casten.



  • int x,y;
    double erg;
    
    erg = ((double) x) / y;
    

    ob die doppelte Klammerung notwendig weiss ich nich.



  • edit: hat sich schon erledigt, wie ich sehe^^

    ja, allerdings solltest du bei der expliziten typumwandlung
    den (double) immer an der richtigen stelle platzieren.
    halte dich einfach an das beispiel oben^^



  • Wenns ums Rechnen mit Geld oder so gehen sollte, einfach alles in Cent
    rechnen und anschließend für die optische Ausgabe Komma oder Punkt
    selbst aufbereiten - double ist nicht immer wirklich genau.
    Dann aber richtig - 3 Stellen mehr und die 3. Stelle zum Runden verwenden
    (kaufmännisches Runden).



  • Da hat pferdefreund Recht.
    Alle monetären Beträge, also alles, das nach Währung riecht, sollte als Ganzzahl verarbeitet und zur Ausgabe entsprechend mit Kommastellen aufbereitet werden. Dadurch schließt man möglichst viele Ursachen für Rundungsdifferenzen aus und erspart sich eine Menge Ärger, wenn's dabei um echtes Geld geht. Stichwort gdpdu bzw. Steuerprüfung 🙂



  • ... oder gleich die sprache nehmen, die von den Banken usw schon
    seit Jahrzehnten verwendet wird - COBOL.
    Das ist ausgereift und in Jahrzehnten bewährt und heute noch im Einsatz und
    auch als freier Compiler für Windows und Linux erhältlich.
    Opencobol - funktioniert prima und kennt auch Dezimalzahlen.


Anmelden zum Antworten