Taschenrechner für (extrem) große Zahlen?

6 Antworten

Mit welchen Zahlen arbeitest du denn? Normalerweise sind nur die ersten Stellen wichtig, den Rest macht man mit Potenzen.
(So arbeiten auch die Zahlentypen double und float, nur nicht in solchen Ausmaßen)

Falls du exakte Zahlen willst musst du selbst mit byte Arrays rechnen, oder Funktionen wie BigDecimal/BigInteger in Java nutzen.

Ich kann mir aber nicht vorstellen, für was man eine Genauigkeit von so vielen Stellen benötigt.

Benutze statt 32bit integer werten 64bit integerwwerte. je machdem ob sie positiv oder negativ sind noch unbedingt unsigned oder signed (erhöht die max mögliche zahl).

In 64bit integer variablen können zahlen gespeichert werden von 2^(64)


MorsGER 
Beitragsersteller
 30.07.2016, 17:59

Das Speichern als Integer ist nicht das Problem. Die Zahl kann ich in meinem Programm (im Arbeitsspeicher) haben. Nur die Rechenoperationen werden nicht ausgeführt (sondern nur bis 15-Stellige Zahlen).

0

Brauchst du die Zahlen in voller Genauigkeit, z.B. für Teilbarkeitsbetrachtungen oder andere Aufgaben aus der Zahlentheorie?

Ansonsten reicht doch eigentlich für die allermeisten Aufgaben, dass man die ersten 5-15 Stellen weiß und die Größenordnung als 10er Potenz, z.B.
69! = 1,71122e+98

Wenn volle Genauigkeit:

Python hat eine recht einfache Syntax und rechnet mit Ganzzahlen von (im Prinzip) beliebiger Länge. Das Quadrieren einer Zahl mit 1-Mio-Stellen geht ratzfatz, das Zählen der Stellen dauert allerdings einen Moment, weil dafür vom 2er ins Dezimalsystem umgerechnet werden muss.

Wenn du Basic kannst, kannst du auch schnell Python. Probier's aus, du willst hinterher nichts anderes mehr ;-)

Mit Byte-Arrays lassen sich beliebig große Zahlen darstellen.

Man kann mittels double dabble-Algorithmus Binär und Dezimal ineinander umrechnen.


MorsGER 
Beitragsersteller
 30.07.2016, 18:05

Erstmal danke. Aber das Darstellen ist nicht das Problem. Das Rechnen mit diesen Zahlen ist es.

Das Programm führt komplexe Rechenoperationen (z.B. Multiplikation) von Zahlen mit mehr als 15 Stellen einfach nicht mehr aus.

0
PerfectMuffin  30.07.2016, 18:20
@MorsGER

Multiplikation ist einfach, mach dir ein Programm, das 8bit-Zahlen multipliziert(ohne MAL-Zeichen) und skaliere es dann hoch.

Aber viel Spaß mit Division.

Viele Frameworks haben Datenstrukturen wie Javas BigInteger, in denen sowas implementiert sein kann.

0