LibreOfficeDev Katumpakan ng Pagkalkula

Taglay na Problema sa Katumpakan

Ang LibreOfficeDev Calc, tulad ng karamihan sa iba pang software ng spreadsheet, ay gumagamit ng mga kakayahan sa floating-point math na available sa hardware. Dahil ang karamihan sa kontemporaryong hardware ay gumagamit ng binary floating-point arithmetic na may limitadong katumpakan na tinukoy sa IEEE 754 karaniwan, maraming decimal na numero - kabilang ang kasing simple ng 0.1 - ay hindi maaaring tiyak na kinakatawan sa LibreOfficeDev Calc (na gumagamit ng 64-bit na double-precision na mga numero sa loob).

Ang mga kalkulasyon sa mga numerong iyon ay kinakailangan nagreresulta sa mga error sa pag-ikot , at ang mga naiipon sa bawat pagkalkula.

Ito ay hindi isang bug, ngunit inaasahan at kasalukuyang hindi maiiwasan nang hindi gumagamit ng mga kumplikadong kalkulasyon sa software, na magkakaroon ng hindi naaangkop na mga parusa sa pagganap, at sa gayon ay hindi pinag-uusapan. Kailangang i-account iyon ng mga user, at gumamit ng rounding at paghahambing sa machine epsilon (o unit roundoff) kung kinakailangan.

Isang halimbawa na may mga numero:

A

1

31000.99

2

32000.12

3

=A1-A2


Magreresulta ito sa -999.129999999997 sa A3, sa halip na inaasahan -999.13 (maaaring kailanganin mong dagdagan ang mga ipinapakitang decimal na lugar sa cell format upang makita ito).

Isang halimbawa na may mga petsa at oras:

Dahil sa partikular na representasyon ng oras sa Calc, nalalapat din ito sa lahat ng kalkulasyon na kinasasangkutan ng mga oras. Halimbawa, ipinapakita ng mga cell A1 at A2 sa ibaba ang data ng petsa at oras na inilagay (sa ISO 8601 na format):

A

1

2020-04-13 12:18:00

2

2020-04-13 12:08:00

3

=A1-A2


Ang cell A3 ay magpapakita ng 00:10:00 kung ang default na pag-format [HH]:MM:SS ay inilapat sa cell. Gayunpaman, ang cell A3 ay magpapakita ng 00:09:59.999999 sa halip na inaasahang 00:10:00.000000 kung na-format gamit ang [HH]:MM:SS.000000 na format na string. Nangyayari ito sa kabila ng buong bilang ng mga oras at minuto lang ang ginamit, dahil sa loob, anumang oras ay isang fraction ng isang araw, 12:00 (tanghali) na kinakatawan bilang 0.5.

Ang data sa A1 ay panloob na kinakatawan bilang 43934.5125, at sa A2 bilang 43934.5055555555591126903891563 (na hindi eksaktong representasyon ng ipinasok na datetime, na magiging 43934.505555555555...).

Ang kanilang pagbabawas ay nagreresulta sa 0.00694444443287037, isang halaga na bahagyang mas mababa kaysa sa inaasahang 0.00694444444444..., na 10 minuto.