[gelöst] genauigkeit und große von zahlen



  • Hi, ich addiere 4 große Zahlen und möchte das ergebniss ausgeben:

    double sum = buf[0]+buf[1]+buf[2]+buf[3];
    	cout.precision(15);
    	cout<<"= "<<sum<<endl;
    

    Leider bekomm ich ein falsches Ergebniss:

    324729271
    3086596908
    3086597000
    64971124
    = 2267927007

    buf ist übrigens ein unsigned int array. Kann mir jemand sagen was ich falsch mache?



  • Du hast unsigned int Werte, also wird die Addition auch in unsigned in durchgeführt - und dort bist du mal eben über die Genauigkeits grenze hinausgeschossen (Ganzzahl-Rechnungen arbeiten auf Modulo-Basis).

    Als Lösung könntest du deinen buf[] umstellen zu einem double-Array oder den ersten Summanden nach double casten.



  • Argh, das kommt davon wenn man nicht explizit castet ^^

    Danke CStoll


Anmelden zum Antworten