Python behandelt große Zahlen automatisch (im Gegensatz zu einer Sprache wie C, in der die Datentypen überlaufen können und die Werte auf Null zurückgesetzt sind) - über einen bestimmten Punkt (sys.maxint
oder 2147483647) konvertiert sie die ganze Zahl in eine "lange" (bezeichnet durch die L
nach der Zahl), die beliebig lang sein kann:
>>> def fact(x):
... return reduce(lambda x, y: x * y, range(1, x+1))
...
>>> fact(10)
3628800
>>> fact(200)
788657867364790503552363213932185062295135977687173263294742533244359449963403342920304284011984623904177212138919638830257642790242637105061926624952829931113462857270763317237396988943922445621451664240254033291864131227428294853277524242407573903240321257405579568660226031904170324062351700858796178922222789623703897374720000000000000000000000000000000000000000000000000L
Lange Zahlen sind „easy“, Gleitkommazahl ist komplizierter, und fast jede Computerdarstellung einer Gleitkommazahl ist eine Annäherung, Zum Beispiel:
>>> float(1)/3
0.33333333333333331
Natürlich kann man nicht eine unendliche Anzahl von 3s im Speicher speichern, so dass es betrügt und rundet es ein wenig ..
Sie können am decimal Modul aussehen soll:
- Dezimalzahlen kann genau dargestellt werden. Im Gegensatz dazu haben Zahlen wie 1.1 keine exakte Darstellung im binären Fließkomma. Endbenutzer erwarten normalerweise nicht, dass 1.1 als 1.1000000000000001 angezeigt wird, wie dies bei binären Fließkommazahlen der Fall ist.
- Im Gegensatz zu binären Gleitkomma-Hardware basierte, hat das Dezimalsystem Modul einen Benutzer änderbare Genauigkeit (bis 28 Plätze in Verzug), die als
für ein gegebenes Problem benötigt so groß sein kann
Es ist nicht sehr schwer 200 zu berechnen! heutzutage. Siehe http://www53.wolframalpha.com/input/?i=200! –
Beachten Sie, dass die obige URL das "!" Charakter. Ich bin mir nicht sicher, warum SO es nicht als Teil des Links enthält. –
Beim automatischen Verknüpfen von Text zum Ignorieren von Satzzeichen (außer Schrägstrich) am Ende einer URL ist es im Allgemeinen eine gute Übung. In 99% der Fälle hat der Benutzer eine nicht interpunktierte URL in Klammern oder in einem Satz eingefügt, und das Einfügen der Interpunktion würde den Link unterbrechen. Sie hatten gerade das Pech, eines der verbleibenden 1% der Fälle zu sein. –