zahlen mit nachkommastelle



  • Hallo,

    ich habe den typen int initalisiert.
    aber int kann offensichtlich keine nachkommastellen benutzen.

    ich habe versucht mit

    x= 1.5;
    y=x*2;

    er nimtm aber nciht 1.5, sondern 1.

    wie kann ich mit Nachkommastellen rechnen bzw welchen variablen typen benötige ich hierfür?

    Vielen Dank
    Edwart



  • float oder double, je nach gewünschter Genauigkeit. Dabei solltest du beachten, dass bei Rechnungen mit Gleitkommazahlen Rundungsfehler auftreten und dass somit bei finanzmathematischen Angelegenheiten zu Problemen führen kann.



  • float                 <= double               <= long double
    einfache genauigkeit     doppelte genauigkeit    erweiterte genauigkeit
    
    unter win xp, 32 bit:
     4 byte                   8 byte                  12 byte
    

    //EDIT siehe 0xdeadbeefs post



  • ok,

    wenn ich nun folgendes habe:

    float x;
    x=1.9567287;

    wie kann cih das wieder auf x=1 abrunden, also die kommastellen hinter dem komma wegschmeise.

    klingt etwas doof, erst bruach ich kommme stellen dann wieder nciht.

    für die berechnung benötige ich kommastellen. danach darf aber nciht aufgerundet werden, sondern nur ab.

    wie funktioniert abrunden.



  • @Lars Hupel: Du meinst hoffentlich float, double, long double - long allein ist ein integraler Typ.

    Was das abrunden angeht,

    double x; // oder halt ein anderer Fließkomma-Typ, normalerweise benutzt man eher double als float
    
    x = 1.23456;
    x = double(int(x)); // umwandeln nach int, dabei gehen die Nachkommastellen verloren, danach umwandeln in double
    


  • Ähm also was nun? Nachkommstellen wegwerfen oder abrunden? Das sind zwei verschiedene Dinge. (man beachte negative Zahlen) Außerdem ist der Cast nach int unnötig und kann Seiteneffekte haben.

    #include <math.h>
    
    double d = -1.23456;
    d = fabs( d); ///< Nachkommastellen wegwerfen
    /// d ist nun -1
    
    d = -1.23456;
    d = floor( d); ///< echtes Abrunden
    /// d ist nun -2
    


  • *hust*

    ich meine natürlich trunc und nicht fabs



  • 0xdeadbeef schrieb:

    @Lars Hupel: Du meinst hoffentlich float, double, long double - long allein ist ein integraler Typ.

    sry! natürlich meine ich double, hab mich vertippt


Anmelden zum Antworten