Numerische Grenzen

(Größte und kleinste darstellbare Zahlen)

Numerische Grenzen in der praktischen Informatik

Auf dieser Seite wird die größte von einem PC darstellbare Zahl bestimmt.
Dazu wird die Zahl 1 so oft wie möglich verdoppelt.



Größte Zahl mit Tabellen-Kalkulation


 
A
B
1
n
2^n
2
0
=2^A2
3
=A2+1
=2^A3
4
=A3+1
=2^A4
 
⇓⇓
⇓⇓
30
=A29+1
=2^A30

Grobe Eingrenzung

Dieses Kapitel zeigt ein einfaches Experiment, mit dem man die größte von einem PC darstellbare Zahl selbst messen kann.
Es funktioniert mit jedem Standard → Kalkulations-Programm, z.B. mit
LibreOffice-Calc, MS-Excel, OpenOffice-Calc

Im Kapitel ↓ Live-Berechnung sehen sie das Ergebnis, hier allerdings mit Javascript berechnet.

Programmieren sie die ersten Zeilen (1 bis 3).
Füllen sie danach die Formeln von A3:B3 nach unten aus.
Die Werte in Spalte B werden in jeder Zeile verdoppelt.


Live-Ergebnis
Die größte fehlerfrei darstellbare Potenz von 2 ist
2^1023 ≈ 8.9885E+307
Die numerische Grenze muss daher zwischen 2^1023 und 2^1024 liegen.


 
C
D
E
F
1
n
2^n
Σ(2^n)
2er Exponent
2
1023
=2^C2
=D2
=LN(E2)/LN(2)
3
=C2-1
=2^C3
=E2+D3
=LN(E3)/LN(2)
4
=C3-1
=2^C4
=E3+D4
=LN(E4)/LN(2)
 
⇓⇓
⇓⇓
⇓⇓
⇓⇓
60
=C59-1
=2^C60
=E59+D60
=LN(E60)/LN(2)

Verbesserung der Genauigkeit

Im folgenden Experiment wird die Genauigkeit der ↑ ersten Abschätzung verbessert, und der Bereich zwischen 2^1023 und 2^1024 genauer untersucht:
Zum Anfangs-Wert von 2^1023 werden so viele kleinere Zahlen addiert wie möglich
Man kommt besonders schnell zum Ergebnis, wenn man zur Addition Potenzen von 2 verwendet, die allerdings kleiner als 2^1023 sein müssen.

Programmieren sie die ersten Zeilen (1 bis 3).
Füllen sie danach die Formeln von C3:D3 nach unten aus.


Ergebnis
Man kann die ersten 52 Werte addieren, bevor bei der Addition von 2^970 ein Fehler auftritt.

Mit diesem Experiment findet man als größte darstellbare Zahl einen Wert, der sehr nahe an 2^1024 liegt:
zmax = 1.7976931348623E+308 ≈ 2^1024

Hinweis für IT-Insider: Die Zahl 52 ist kein Zufall, sondern die Anzahl der Bits in der → Mantisse, die hier der Reihe nach auf den Wert 1 gesetzt werden.


Bedeutung in der Praxis

Die darstellbare Größe der Zahlen ist für die meisten Rechnungen vollkommen ausreichend.
Beispiel:
Die Entfernung zum Zentrum der Milchstraße beträgt 'nur' ca. 2^78mm, der Durchmesser des bekannten Universums ca 2^98mm
Demo-Beispiel → Potenzen von 2

In einigen Bereichen stößt man allerdings schon bald an die Grenzen:
Die Werte der Funktionen exp(710) oder (172)! oder 144^144 überschreiten bereits die Grenze. In Reihen-Entwicklungen und in der Kombinatorik (Wahrscheinlichkeits-Rechnung) wird z.B. oft die Fakultät-Funktion verwendet.
In diesen Fällen muss man auf die Werte-Grenze achten und z.B. Formeln oder Algorithmen umformen, oder Reihen rechtzeitig abbrechen.

Größte Zahl mit Taschenrechner



Live-Ermittlung der größten darstellbaren Zahl mit Javascript




Dazu pasend gibt es diese Test-Methoden:
var x = Math.pow(2,2000);
if(Number.isFinite(x) {...}
if(isNaN(x) {...}
Die Tests sind sehr empfehlenswert, wenn bei einer Aufgabe besonders gro├če oder besonders kleine Zahlen berechnet werden.
Beispiel: Berechnen sie mit einem selbst erstellten Programm die Fakultät-Funktionen
y = 170!
y = 175!

Werte-Grenzen für Fortgeschrittene



Das System aus Mantisse & Exponent kann mit wenigen Ziffern fast beliebig große oder kleine Werte codieren, z.B. von 1.23E-100 bis 1.23E+100
In der Praxis wird es durch 2 Grenzen eingeschränkt:
Die Genauigkeit wird durch die Anzahl der Ziffern bestimmt, die man für die Mantisse aufwendet.
Der Werte-Bereich wird durch die Anzahl der Ziffern bestimmt, die man für den Exponenten verwendet.

In der IT-Praxis werden Mantisse und Exponent allerdings binär codiert, nicht - wie im Beispie - dezimal. Zusätzlich muss man noch je 1 Bit für die Vorzeichen von Mantisse und Exponent verwenden.



Anmerkungen zum Variablen-Typ 'Double Precision':
• Die theoretisch größte Zahl (2^1024)-1 ist in der Praxis nicht mehr berechenbar. Daher ist darunter eine praktisch verwendbare Formel angegeben.

• Die höchste Ziffer einer binären Mantisse ist immer 1, sie wird daher nicht gespeichert, jedoch zum Rechnen verwendet. Daher werden nur 52 Bit der binären Mantisse gespeichert, das 53. (Hidden) Bit verdoppelt jedoch die Genauigkeit gegenüber 52 Bit.

• Der Exponent ist als binäres '2er-Komplement' gespeichert. Daher kann er nur Werte -1022...+1023 annehmen. Die kleinste Zahl ist daher +- 2^(-1022)

Wikipedia: Single Precision, Double Precision, Gleitkomma-Zahlen, Standard IEEE-754, Wissenschaftliches Zahlenformat, Mantisse, Binärsystem, 2er-Komplement


Rechnen mit Zeichenketten

Alle modernen Programmiersprachen bieten Module zum Rechnen mit beliebiger Genauigkeit.
Jede Zahl wird als Zeichenkette (Text, String) von Ziffern gespeichert, z.B. als "1234" und nicht wie sonst als 1234
Rechnungen werden schrittweise mit jeder einzelnen Ziffer ausgeführt, so wie man es in der Grundschule lernt und mit Bleistift & Papier noch immer macht.

Das verlangsamt alle Rechnungen um mehrere Größenordnungen, erlaubt aber fast beliebige Genauigkeit (Je nach String-Typ mindestens 2000 Ziffern meist 65000 Ziffern).
• Das Beispiel zur → Berechnung der Kreiszahl Pi demonstriert Live die Anwendung mit der Programmiersprache PHP und (falls vom Web-Provider angeboten) mit Perl.

Im technisch-wissenschaftlichen Bereich wird Perl bevorzugt, weil man auch mit minimalen Kenntnissen in wenigen Minuten ein Programm schreiben kann, welches eine Aufgabe mit beliebiger Genauigkeit berechnet.