2009-05-04 12 views
0

Ich war schon immer neugierig: Wie kann ich arithmetische Operationen an sehr langen Dezimalzahlen ausführen - zum Beispiel, um pi bis zur 3000. Dezimalstelle zu berechnen (besonders in einer imperativen Sprache)?Arithmetische Operationen an sehr, sehr langen Dezimalzahlen

+0

Welche Sprache verwenden Sie? Aufgrund der APIs, die Sie möglicherweise für bignum-Vorgänge zur Verfügung haben, ist es spezifisch für die Sprache. – Noldorin

+0

C#/VB ......... – Daniel

Antwort

3

Verwenden Sie eine Sprache oder Bibliothek, die beliebige Präzisionszahlen unterstützt ...?

In Python werden Ints automatisch zu Longs promoten, die eine beliebige Größe haben. Sie können einen zweiten Wert verwenden, um zu verfolgen, um wie viele Dezimalstellen nach oben verschoben werden soll, um eine Art Gleitkomma beliebiger Genauigkeit zu erhalten.

In Java können Sie die Klasse BigDecimal verwenden, die "unveränderliche Dezimalzahlen mit Vorzeichen mit beliebiger Genauigkeit" darstellt.

Ich bin sicher, dass andere Beispiele in anderen Sprachen existieren.

0

Entweder müssen Sie mit den Daten auf der Ziffernebene arbeiten (z. B. jede Ziffer schrittweise oder deterministisch berechnen) oder neue Datenstrukturen definieren, die über eine ausreichende Anzahl von Bits verfügen, um eine ausreichende Genauigkeit zu gewährleisten.

3

Für Sprachen, die Berechnungen auf Bignums nicht unterstützen, gibt es oft Bibliotheken. Vielleicht sehen Sie sich beispielsweise GMP an. Die Dokumente geben Ihnen Hinweise auf einige der typischen algorithmischen Ansätze.

machen bignum Arithmetik schnell ist schwierig, so gibt es einige ziemlich gewundenen Algorithmen da draußen ...

Verwandte Themen