Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
q, r = divmod(2L**56, 10)<br />
>>> r<br />
6L<br />
După ce restul este mai mare decît jumătatea lui 10, cea mai bună aproximaţie se obţine prin rotunjirea:<br />
>>> q+1<br />
7205759403792794L<br />
Astfel cea mai bună aproximaţie a lui 1/10, în dubla precizie 754, este peste 2**56, sau<br />
7205759403792794 / 72057594037927936<br />
De remarcat că până la rotunjire, valoarea este de fapt un pic mai mare decât 1/10; dacă nu am rotunji câtul va fi<br />
un pic mai mic decît 1/10. Dar în nici un caz nu poate fi exact 1/10!<br />
Deci, niciodata computerul nu va “arăta” 1/10: ce va arăta este exact fracţia dată mai jos, cea mai bună aproximaţie<br />
în 754 care poate fi dată:<br />
>>> .1 * 2L**56<br />
7205759403792794.0<br />
Dacă se înmulţeşte fracţia cu 10**30, vom vedea valoarea (truncheată) a celor mai semnificativi 30 de digiţi<br />
zecimali ai săi:<br />
>>> 7205759403792794L * 10L**30 / 2L**56<br />
100000000000000005551115123125L<br />
însemnând că numărul exact memorat în calculator este aproximativ egal cu valoarea zecimală<br />
0.100000000000000005551115123125. Rotunjind la 17 digiţi semnificativi rezultă 0.100000000000000001 pe<br />
care <strong>Python</strong> îl afişează (va afişa pe orice platformă conformă 754 care va face tot posibilul să convertească intrare<br />
şi ieşire prin biblioteca C proprie — al dumneavoastră s-ar putea să nu reuşească acest lucru!)<br />
92 Anexa B. Aritmetica în virgulă flotantă: rezultate şi limitări