Nicht wirklich. Aber auch mit double
-Typen wird der Overflow bei N == 171 erreicht.
Ein weiteres Problem bei double
ist, dass das Ergebnis nur ein Näherungswert ist. Der Datentyp double
verfügt nur über ungefähr 17 Stellen Genauigkeit. Das könnte nicht gut genug sein. Wenn wir es z.B. mit Zahlentheorie zu tun haben, dann sind Näherungswerte nutzlos.
Mathematische Formeln verwenden häufig Fakultäten. Aber die explizite Berechnung von Fakultäten kann durch eine Umstellung der Formel vermieden werden.
Zum Beispiel ist die Anzahl der Kombinationen von r
Objekten aus einer Menge von n
Objekten:
n! / (n-r)!
Angenommen wir möchten die Anzahl der Kombinationen von 5 Objekten aus einer Menge von 30 berechnen. Es sieht so aus, als ob wir sowohl 30! als auch 25! berechnen müßten. Beides wäre ein Disaster. Aber, indem wir kürzen wird aus der Formel
30 * 29 * 28 * 27 * 26
was ohne Probleme berechnet werden kann.
Hier ist eine Javascript Version des Fakultät-Rechners:
Wir probieren einige Werte für N, die die Grenzen testen: -1, 0, 1 und 20. Dann testen wir einige kleine Werte wie 6 oder 12.
Wenn wir einen Ziegelstein von einem Turm werfen, was passiert?