Seeehr große Zahlen
-
Hi,
wie kann ich mit solchen Zahlen in meinem Programm umgehen?
Beispiel:
1.082.235.166.648.110.000.000.000.000Ich weiß nur so viel:
1. Es geht Open Office schaffts ja auch
2. in eine unsigned long long passts nicht die geht ja nur bis 18,446,744,073,709,551,615MfG
Scarabol
-
Eine extra Bibliothek nutzen oder selbst schreiben.
Statt einem unsigned long long nimmst du eben zwei unsigned long long. Bei Addition überprüfst du auf einen Überlauf, und tritt ein Überlauf auf, so addierst du auch etwas beim zweiten Long.
-
Hi,
wo find ich solche Bibliotheken wie heißen die?
Haben solche Libs Grenzen? Was ist noch sinnvoll? Wie siehts mit der Performance aus?
MfG
Scarabol
-
Die Grenzen sind wohl abhängig von der Bibliothek. Ob die Bibliothek jetzt 128bit Datentypen anbietet, oder sogar 256 bit (oder noch größer).
Die Performance leidet natürlich darunter, denn du kannst ja nicht mehr nativ mit den Registern der Prozessoren rechnen, die sind zu klein.
Was sinnvoll ist, ist immer abhängig vom Einsatzgebiet.
-
Siehe dazu auch die C++ FAQ Punkt 4.
-
Scarabol schrieb:
wo find ich solche Bibliotheken wie heißen die?
Aber wie gesagt: Gibt irgendwo einen FAQ-Eintrag dazu und Google spuckt da auch sehr viel aus.
-
Scarabol schrieb:
wie kann ich mit solchen Zahlen in meinem Programm umgehen?
Beispiel:
1.082.235.166.648.110.000.000.000.000 ^ ^^^ ^^^ ^^^ ^^^ ^^ 15 Stellen
Wenn Du nur ca 15 signifikante Stellen brauchst, könnte man auch einfach
double
nehmen. Eindouble
speichert Zahlen mit etwa std::numeric_limits<double>::digits10 vielen signifikanten Dezimalstellen (typischerweise 15, kommt auf Compiler/Rechner an).