2013-07-06 6 views
5

Norma IEEE-754 określa arytmetykę dziesiętną w celu uniknięcia błędów zaokrąglania przy użyciu liczb dziesiętnych w postaci liczby dziesiętnej (patrz na przykład decimal64 on wikipedia). Czy istnieje sposób na wykorzystanie tej dziesiętnej arytmetyki w C lub C++?Arytmetyka dziesiętna w C lub C++?

+4

Użyj biblioteki. libgmp, mpfr, Boost Multiprecision – sehe

+3

Standard C nie ma jawnie dziesiętnych typów zmiennoprzecinkowych, ale [GCC zapewnia to] (http://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html). Istnieje wiele konkurujących reprezentacji binarnych; Wierzę, że GCC naprawia reprezentację na każdej obsługiwanej platformie. –

+2

Formaty dziesiętne zdefiniowane w IEEE-754 nie pozwalają uniknąć błędów zaokrąglania. (Spróbuj np. 10/3) –

Odpowiedz

4

TR 24733 określa dziesiętną liczbę zmiennoprzecinkową dla C++, w oparciu o IEEE-754. TR oznacza, że ​​jest to raport techniczny, więc nie jest częścią standardu C++. GCC mówi, że mają częściową implementation. W pracach jest obecnie propozycja dodania go do standardu C++, ale to w najlepszym wypadku kilka lat.

+0

+1, dziękuję Pete za cenny wkład. To naprawdę potężne mieć członków komisji/projektantów na pokładzie strony QA. – sehe

+0

@sehe - nie ma za co. –