Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
ANEXA<br />
B<br />
Aritmetica în virgulă flotantă: rezultate şi<br />
limitări<br />
Numerele în virgulă flotantă sunt reprezentate în hardware-ul calculatorului ca fracţii în baza 2 (binare). De<br />
exemplu, fracţia zecimală<br />
0.125<br />
are valoarea 1/10 + 2/100 + 5/1000, şi în acelaşi fel fracţia binară<br />
0.001<br />
are valoarea 0/2 + 0/4 + 1/8. Aceste două fracţii au aceeaşi valoare, singura diferenţă reală fiind că prima este<br />
scrisă în baza 10, iar a doua în baza 2. Din păcate majoritatea fracţiilor zecimale nu pot fi reprezentate corect ca<br />
fracţii binare. O primă concluzie este că, (în general, numerele în virgulă flotantă zecimală pe care le introduceţi<br />
au numai o reprezentare aproximativă prin numerele în virgulă flotantă binară memorate în calculator.<br />
Problema este uşor de înţeles întî în baza 10. Să considerăm fracţia 1/3. O puteţ aproxima cu o fracţie î baza 10:<br />
0.3<br />
sau, mai precis,<br />
0.33<br />
sau ,şi mai precis,<br />
0.333<br />
şi tot aşa. Nu contează ce număr de digiţi veţi scrie, rezultatul nu va fi nicicâd exact 1/3, dar creşte acurateţea<br />
aproximării lui 1/3.<br />
În acelaşi mod, nu contează câti digiţi în baza 2 folosiţi, valoarea zecimală 0.1 nu va fi reprezentată exact niciodată<br />
printr-o fracţie. În baza 2, 1/10 este o fracţie care se repetă la infinit<br />
0.0001100110011001100110011001100110011001100110011...<br />
Oprirea la un număr finit de biţi dă o aproximare. Iată ce se afişează în situaţia următoare :<br />
>>> 0.1<br />
0.10000000000000001<br />
Pe majoritatea maşinilor existente astăzi acest rezultat se afişează dacă introduceţi 0.1 la prompterului <strong>Python</strong>-ului.<br />
89