Natančnost pri računanju v LibreOffice

Inherentni problem natančnosti

LibreOffice Calc tako kot večina drugih elektronskih preglednic uporablja zmožnosti strojne opreme za računanje s števili s plavajočo vejico. Glede na to, da uporablja večina sodobne strojne opreme binarno aritmetiko plavajoče vejice z omejeno natančnostjo, določeno s standardom IEEE 754, številnih decimalnih števil – vključno s tako enostavnim, kot je 0,1 – ni mogoče natančno predstaviti v programu LibreOffice Calc (ki interno uporablja 64-bitna števila z dvojno natančnostjo).

Računanje s temi števili nujno vodi v napake pri zaokrožanju, te pa se z vsakim nadaljnjim izračunom nalagajo.

Ne gre za hrošča, temveč za pričakovano in trenutno neizogibno težavo, če ne uporabljamo kompleksnih izračunov v programski opremi, ki bi povzročila visok davek na hitrost delovanja, zato ne pride v poštev. Uporabniki morajo to upoštevati in po potrebi uporabljati zaokrožanje in primerjave s strojnim epsilonom (ali zaokrožanjem enot).

Primer s števili:

A

1

31000.99

2

32000.12

3

=A1-A2


To pripelje do rezultata -999,129999999997 v A3 namesto pričakovanega -999,13 (morda morate povečati prikazano število decimalk v obliki celic, da to vidite).

Podprite nas!