2013-07-06 9 views
5

Die IEEE-754-Norm definiert Dezimalarithmetik, um Rundungsfehler bei der Verwendung von Gleitkommazahlen der Basis 10 zu vermeiden (siehe zum Beispiel decimal64 on wikipedia). Gibt es eine Möglichkeit, diese Dezimalrechnungen in C oder C++ zu verwenden?Dezimalrechnungen in C oder C++?

+4

Verwenden Sie eine Bibliothek. libgmp, mpfr, Boost Multiprecision – sehe

+3

Der C-Standard hat keine expliziten Gleitkommazahlen, aber [GCC bietet dies] (http://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html). Es gibt mehrere konkurrierende Binärdarstellungen; Ich glaube, dass GCC die Darstellung auf jeder unterstützten Plattform korrigiert. –

+2

Die in IEEE-754 definierten Dezimalformate vermeiden keine Rundungsfehler. (Versuchen Sie z.B. 10/3) –

Antwort

4

TR 24733 gibt die Dezimal-Fließkommamathematik für C++ an, basierend auf IEEE-754. Das TR bedeutet, dass es sich um einen technischen Bericht handelt, der nicht Teil des C++ - Standards ist. GCC sagt, sie haben eine partielle implementation. Es gibt derzeit einen Vorschlag, ihn dem C++ - Standard hinzuzufügen, aber das ist bestenfalls einige Jahre entfernt.

+0

+1, danke Pete für deine wertvollen Beiträge. Es ist sehr wirkungsvoll, Komiteemitglieder/Designer an Bord einer QA-Site zu haben. – sehe

+0

@sehe - Gern geschehen. –