Anfängerfrage: Potenzberechnung mit long-Zahlen
-
Hallo zusammen.
Ich habe folgendes Problem, aus dem ich einfach nicht schlau werde.
Wenn ich folgendes berechne: (long)(pow(3,4)) und es mir dann mit printf auf dem Bildschirm ausgeben lasse, erscheint korrekterweise 81, weil 3^4 = 81.
Mache ich dasselbe mit (long)(pow(4,4)) erscheint 256. Alles korrekt.
Wenn ich aber nun (long)(pow(5,4)) ausrechnen lasse, dann erscheint 624 und das ist FALSCH, denn 5^4 = 625.
Ich verstehe das nicht. Was mache ich falsch.
Ich benutze den GNU-Freeware-Compiler für Windows, wenn das was hilft.Danke für die Hilfe.
-
Vielleicht ist das Ergebnis von pow() nicht exakt 625, sondern 624.9999999999999?
-
pow() gibt eine Fliesskommazahl zurueck, da koennen schonmal Rundungsfehler auftreten.
-
Super. Danke schonmal für die schnelle Hilfe.
Wenn ich nun weiß, dass ich sowieso nur Potenzen von integer-Zahlen berechnen will, gibt es dann eine zu pow äquivalente Funktion, die das korrekte Ergebnis liefert und interger-Zahlen als Input akzeptiert? Oder ist es besser, die Fließkommazahl korrekt zu runden?
-
Fertige Funktionen für Integer gibts leider nicht.
Aber das wird dich interessieren: http://de.wikipedia.org/wiki/Schnelles_Potenzieren
-
da war doch was: http://www.c-plusplus.net/forum/viewtopic-var-t-is-180033-and-postdays-is-0-and-postorder-is-asc-and-start-is-0.html
-
Vielen Dank. Ich denke das hilft.