/ / Zaokrúhlenie na MPFR - matematika, desatinná čiarka, bignum, mpfr

MPFR zaokrúhľovanie vydanie - math, floating-point, bignum, mpfr

Práve som začal pracovať s MPFR ľubovoľnepresné knižnice a pomerne skoro sa stretnú s veľmi divokým správaním. Hlavným cieľom jeho použitia bolo zvýšenie presnosti lagre argumentov, a to funguje veľmi dobre v MPFR.

Ale potom som sa rozhodol vyskúšať jednoduchú matematiku a bolo to neuveriteľné - dokonca aj v priamych príkladoch s prísnymi odpoveďami existujú chyby zaokrúhľovania a nezávisí to od použitej presnosti.

Aj v príklade ako 1.1 * 1 je výsledkom 1.10000000000000008881784 ... A tento výsledok je daný pri šialenej 2000 bitovej presnosti (53 v normálnom dvojnásobku)!

Možno je to problém môjho systému, ale aj v prípade MPFR online existujú podobné problémy. Taký príklad môžete vyskúšať online: http://ex-cs.sist.ac.jp/~tkouya/try_mpfr.html

1 * 1,1 @ 64 bitov = 1,1000000000000000000002

Ale online verzia posunie chybu ďalej so zvýšením presnosti, ale v mojej inštalácii - nie.

Môj systém: Ubuntu 9.10 + gmp 5.0.0.1 + mpfr 2.4.2

odpovede:

3 pre odpoveď č. 1

Zdá sa, že ide o kanonickú odpoveď na otázky presnosti s pohyblivou rádovou čiarkou, Obsahuje vysvetlenie, prečo problém nevyrieši viac bitov.

Stará odpoveď

Pozri otázku 7 častých otázok o MPFR. Každopádne vždy dôjde k nejakej chybe, pretože veľa čísel nie je možné presne vyjadriť pomocou binárnych mantis bez ohľadu na to, koľko bitov používate. vidieť túto odpoveď pre súvisiace vysvetlenie.