[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
= 2267927007buf 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