2010-09-18 17 views
10

Mögliche Duplizieren:
Working with large numbers in PHP.Extremely Large Ganze Zahlen in PHP

betreibe ich eine völlig nutzlos Facebook-App. Ich habe ein Problem mit der PHP-Unterstützung für Ganzzahlen. Grundsätzlich geben sich die Nutzer eine lächerliche Punktzahl. Der aktuelle "König" hat 102.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.002.557.529.927 Punkte.

PHP scheint mit großen Ganzzahlen nicht gut zu spielen. Wenn jemand versucht, mehr als eine bestimmte Anzahl von Punkten hinzuzufügen, wird dies fehlschlagen, da PHP diese Zahlen als unendlich behandelt.

Gibt es eine Mathebibliothek zum Arbeiten mit lächerlich großen Zahlen? Soll ich die Zahlen als Strings behandeln und eigene schreiben?

Wir sprechen Zahlen, die 2^20 Ziffern sind in Länge oder länger. Sie müssen nicht genau sein (Fehler werden im Allgemeinen auf die schlechte Qualität der App zurückgeführt) und müssen keine hohe Leistung aufweisen. Ich brauche nur etwas, das viel längere Zahlen erlaubt.

(Für diejenigen, die neugierig sind, speichern wir unsere Zahlen in der Wolke, so Lagerkosten ist kein großes Problem.)

+27

'Ich betreibe eine völlig nutzlose Facebook-App'. Du sagst es nicht? Gibt es eine andere Art? – aaronasterling

+1

2^20 Ziffern in der Länge? Sie haben es mit Zahlen zu tun, die über eine Million Ziffern haben? Sie müssen sich möglicherweise Sorgen über die Speicherkosten machen. –

+0

"Für diejenigen unter Ihnen, die neugierig sind, speichern wir unsere Nummern in der Cloud, daher sind die Speicherkosten kein großes Problem." ;) Wir sprechen auch 60 aktive Benutzer. –

Antwort

9

PHP verwendet Schwimmern oder 32-Bit-Ints Zahlen zu speichern. Das ist natürlich nicht genug. Sie können die Arithmetik mit beliebiger Genauigkeit verwenden, um diese großen Zahlen zu speichern. Konsultieren Sie das PHP Buch über BC Math für weitere Informationen:

http://php.net/manual/en/book.bc.php

5

Zwei PHP-Bibliotheken für die Arbeit mit großen Zahlen sind BC Math und GMP.

+2

GMP beschränkte mich auf 10^50, als ich Nummern hinzufügte. Ich konnte alles speichern, was ich wollte, aber es würde bei 10^50 enden, wenn ich hinzufügen wollte. Ich werde BC Math versuchen. –