Despre precizia de calcul superioară din aplicațiile Pages, Numbers și Keynote

După actualizarea aplicațiilor Pages, Numbers și Keynote, este posibil să remarci mici schimbări în ceea ce privește rezultatele calculelor din documentele tale. Motivul este că cea mai recentă versiune iWork include o actualizare a motorului de calcul, care produce rezultate chiar mai precise decât înainte.

Pentru majoritatea formulelor nu vor apărea diferențe vizibile, însă calculele care au ca rezultat sau care utilizează numere foarte mici ar putea să afișeze acum un rezultat mai precis.

Exemplul 1

În versiunile anterioare ale aplicațiilor Numbers, Pages și Keynote, calculul = 10 - 9,8 avea ca rezultat valoarea 0,199999999999999.

Modificarea numărului de zecimale afișate în celulă (între 1 și 14 zecimale) poate remedia problema și poate determina afișarea rezultatului dorit, adică 0,2. Creșterea numărului de zecimale afișate în celulă determină afișarea rezultatului 0,199999999999999000000000000000.

Acest lucru se întâmplă ca urmare a modului în care sistemul binar stochează în memoria internă numerele cu zecimale. Reprezentările în sistem binar ale numerelor cu zecimale aveau discrepanțe foarte mici. Motorul de calcul din aplicațiile Pages, Numbers și Keynote a utilizat dintotdeauna tehnici sofisticate pentru a preveni agregarea în calcule a acestor discrepanțe, însă la niveluri foarte mari ale preciziei, diferențele se pot observa mai clar.

Noul motor de calcul aduce îmbunătățiri considerabile în comparație cu versiunile anterioare, prin utilizarea unei reprezentări zecimale tuturor numerelor din calcul.

Rezultatul aceluiași calcul, = 10 - 9,8, este acum valoarea 0,2. Creșterea numărului de zecimale afișate va genera acum valoarea 0,2000000000000000000000000000000.

Exemplul 2

În versiunile anterioare ale aplicației Numbers, formula ROUND(8,415;2) returna valoarea 8,41. Acest lucru se întâmplă și din cauza modului în care valorile sunt stocate intern în sistem binar.

Cu noul motor de calcul, ROUND(8,415;2) returnează valoarea 8,42.

Despre diferențele între codificarea numerelor cu zecimale în sistem binar și codificarea numerelor cu zecimale cu virgulă mobilă

Majoritatea computerelor stochează numerele sub forma unei serii de 0 și 1, care sunt valori binare. Procesul de codificare a numerelor cu zecimale în sistem binar transformă numerele sub formă de fracții în corespondentele lor binare. Când numerele sunt codificate astfel, unele valori nu pot fi reprezentate cu acuratețe maximă. De exemplu, forma binară a numărului 0,2 este 0,001100110011... (secvența se repetă). Valoarea trebuie să fie trunchiată pentru a putea fi codificată prin procesul de codificare a numerelor cu zecimale în sistem binar, iar valoarea stocată va fi ușor modificată. Chiar dacă discrepanțele introduse de acest proces pot fi foarte mici, aceste discrepanțe devin mai evidente atunci când sunt amplificate prin anumite tipuri de calcule în lanț.

Cele mai recente versiuni ale aplicațiilor Pages, Numbers și Keynote codifică numerele prin utilizarea procesului de codificare pe 128 de biți a numerelor cu zecimale cu virgulă mobilă. Acesta este un mod mult mai precis de a codifica fracțiile zecimale, prevenind apariția erorilor de rotunjire uzuale în cazul codificării numerelor cu zecimale în sistem binar. De asemenea, motorul de calcul actualizat funcționează direct cu numerele codificate cu DFP. Astfel, valorile din celulele tabelelor sunt memorate mai precis, iar rezultatele formulelor sunt calculate cu o mai mare exactitate.

Pentru multe formule nu vor apărea diferențe vizibile, însă calculele care au ca rezultat sau care utilizează numere foarte mici ar putea să afișeze acum un rezultat mai precis.

Data publicării: