LibreOffice utrekningspresisjon

Ibuande presisjonsproblem

LibreOffice Calc brukar, som dei fleste reknearka, flyttalsmatematikken som er tilgjengeleg i datamaskinen. GĂ„r ein ut frĂ„ at dei fleste moderne datamaskinene brukar binĂŠr flyttallsaritmetikk med avgrensa presisjon definert i standarden IEEE 754 kan mange desimaltal – for eksempel noko sĂ„ enkelt som 0,1 – kan ikkje representerast nĂžyaktig i LibreOffice Calc (som brukar 64-bit dobbelt-presisionstal internt).

Utrekningar med desse tala resulterer nĂždvendigvis i avrundingsfeil som aukar for kvar utrekning.

Dette er ikkje ein feil i programmet, men er venta og er uunngÄeleg utan Ä bruka komplekse utrekningar som vil fÞra til urimeleg seinking av farten pÄ utrekningane og kjem sÄleis ikkje pÄ tale. Bruikarane mÄ ta omsyn til dette og bruka avrundingar og samanlikningar med machine epsilon (or unit roundoff) etter behov.

Eit eksempel med tal:

A

1

31000.99

2

32000.12

3

=A1-A2


Dette vil resultera i -999,129999999997 i A3 i staden for -999,13 som du kanskje venta. (Det kan henda du mÄ auka talet pÄ viste desimalplassar for Ä sjÄ dette).

Eit eksempel med datoar og klokkeslett:

PÄ grunn av den spesifikke tidsrepresentasjonen i Calc, gjeld dette ogsÄ for alle utrekningar som involverer tid. Cellene A1 og A2 nedanfor viser for eksempel dato- og klokkeslettdataa slik dei er gjevne (i ISO 8601-format):

A

1

2020-04-13 12:18:00

2

2020-04-13 12:08:00

3

=A1-A2


Celle A3 vil visa 00:10:00, viss standard-formateringa [HH]:MM:SS er brukt pÄ cella. Celle A3 vil visa 00:09:59,999999 i staden for 00:10:00.000000 viss cella er formatert med formatstrengen [HH]:MM:SS.000000. Dette skjer sjÞlv om berre heile tal vert brukte for timar og minutt fordi alle klokkeslett er ein brÞkdel av ein dag. SÄleis vert kl. 12 middag representert som 0,5.

Data i A1 vert internt representert som 43934,5125, og i A2 som 43934,5055555555591126903891563 (som ikkje er ein nþyaktig representasjon av den innskrivne datoen og klokkeslettet, som skulle vera 43934,505555555555555555
).

Subtraksjonen av desse resulterer i 0,00694444443287037, ein verdi som er Ăžrlite grann mindre enn den venta 0,00694444444444..., som er 10 minutt.