Frage

Die numerischen Operationen, die wir in unseren Programmen tun werden durch die Anzahl von Bytes beschränkt, dass eine Sprache gibt an für einen bestimmten Datentyp (oder vielleicht Hardware unterstützt). Sagen wir, ich verwenden integer können Berechnungen auf meinem Gehaltsscheck zu tun (auch „short“ ist mehr als genug für eine Verdienst Jahr !!!;)), aber das gleiche mit Bill Gates Reichtum nicht tun können. Also, gehen wir für Dinge wie lange lange und so. Aber sind wir nicht immer noch von der Gnade der Anzahl von Bits, die uns gegeben sind.

Also, wie wäre es, wenn ich numerische Operationen in Software emulieren? Sagen Sie eine Klasse, die Abstracts und numerische Operationen auf Zahlen mit 1000s Ziffern tun können ... Natürlich wird es auch zu langsam sein, aber ich bin nicht viel über Komplexität besorgt, sondern suchen mehr auf nur Berechenbarkeit ...

Vielleicht kann ich es zu berechnen PI bis 1000 digit Genauigkeit in einem Monat verwenden oder ein Mersenne-Primzahlen in einigen Jahren und mit nach Hause nehmen $ 100K;)

So, jetzt meine Frage, 1) Gibt es bereits solche Bibliotheken diese Art von Sachen zu tun gibt (in C / C ++). 2) Wenn ich über die Implementierung einer gehen, haben Sie irgendwelche Vorschläge für mich? (+, -, *, /,%, <<, >> Operationen sollten genug schätze ich)


PS:

  1. Ich bin C / C ++ Programmierer.

  2. Und diese Einschränkung begann mich aus meiner Schulzeit nervt.

War es hilfreich?

Lösung

Ein solche Datentypen sind als beliebige Genauigkeit Zahlen bekannt. In Java gibt es die Klassen BigDecimal und BigInteger die grundlegenden Operationen handhaben (+, -, *, /) auf einstelliger Ebene. Sie haben keine ‚eingebaute‘ Größenbeschränkung. Sie sind eigentlich nicht so langsam und in einer Menge von realen Domänen verwendet.

C / C ++ hat es nicht eingebaute in, aber es gibt eine Menge von Bibliotheken da draußen. Hier finden Sie eine Liste hier: http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic#Libraries

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top