Bibliothek mit Standardtyp zur Darstellung von Dezimalbrüchen

Ich möchte Dezimalbrüche (dh m * 10^{-k} für ganze Zahlen m,k ) mit exakter Genauigkeit ausdrücken können - im Gegensatz zu dem, was wir mit binären Gleitkommawerten haben. Im Wesentlichen gibt es zwei Optionen: Fließkomma, aber dezimal (wie in diesem Vorschlag ) oder Festkomma, wobei nur die Mantisse gespeichert wird.

Ich bin also auf der Suche nach einer Bibliothek, die eine dieser Optionen oder beide vernünftig implementiert.

Anforderungen:

  • Gratis
  • Header-meistens
  • LGPL oder ähnlich lockere FOSS-Lizenz
  • Nicht aufgegeben

Wünschenswert:

  • Nur Kopfzeile
  • So schnell, wie man angesichts der fehlenden Hardwareunterstützung dafür erwarten konnte
  • Gut dokumentiert
  • C++11/C++14-orientiert
  • Keine wesentlichen externen Abhängigkeiten

Antworten (2)

Sie könnten sich die GNU Multiple Precision Arithmetic Library (GMP) ansehen, möglicherweise mit der GNU MPFR Library , die C-Bibliotheken für Gleitkommaberechnungen mit mehrfacher Genauigkeit und korrekter Rundung sind.

Es gibt Bindungen für C++ und andere Sprachen.

  • Gratis
  • Open Source GNU Lesser General Public License (LGPL v 3)
  • Neueste Veröffentlichung zum Zeitpunkt des Verfassens dieses Artikels: GMP 16. Dezember 2016 & MPFR 27. September 2016, aber das VCS zeigt diese Woche Checkins für beide an.
  • Dokumentation sieht gut aus
  • MPFR hängt von GMP ab
IIANM, Die GMP-Bibliothek bietet keinen der von mir gewünschten Typen an. Das, was sie am ehesten anbieten, sind rationale Argumente, und das ist nicht wirklich das, wonach ich suche.

Es hört sich so an, als ob Sie nach dem mpdecimal -Paket oder seiner zugrunde liegenden libmpdec- Bibliothek suchen, die "eine vollständige Implementierung der General Decimal Arithmetic Specification" ist.

Darüber hinaus listet die von Ihnen verlinkte Vorschlagsseite bereits einige andere Implementierungen auf, insbesondere von Intel und IBM .