Faq/Calc/Nauwkeurigheid van berekeningen

    From The Document Foundation Wiki
    < Faq‎ | Calc
    This page is a translated version of the page Faq/Calc/Accuracy and the translation is 100% complete.
    Other languages:


    Nauwkeurigheid van berekeningen

    Calc, gebruikt net zoals de meest andere vergelijkbare software de beschikbare floating-point berekeningsmogelijkheden van de hardware. Omdat de meeste huidige hardware binaire floating-point berekeningen met beperkte precisie doen, zoals in de norm IEEE 754 is beschreven, zijn ook eenvoudige waarden als 0.1 soms niet precies weer te geven (Calc gebruikt intern 64-bit double-precision getallen). berekeningen met zulke getallen resulteren in afrondfouten, en die nemen met elke berekening toe. Dit is geen bug, maar het is verwacht en op dit moment onoplosbaar probleem, zonder complexe berekeningen in de software, die nadelig zijn voor de performance. Hou er rekening mee en gebruik waar nodig afronden en vergelijkingen met epsilon.

    Voorbeeld:

    A
    1 31000.99
    2 32000.12
    3 =A1-A2

    Het resultaat is -999.129999999997 in A3, niet de verwachte -999.13 (mogelijk moet je meer decimalen tonen om dit te zien).

    Ook bij de tijdweergave in Calc, speelt dit ook bij berekeningen met tijd. Voorbeeld: cellen A1 en A2 tonen de ingevoerde datum en tijd (ISO 8601):

    A
    1 2020-04-13 12:18:00
    2 2020-04-13 12:08:00
    3 =A1-A2

    Cel A3 zal 00:09:59.999999 bevatten in plaats van 00:10:00.000000 indien de opmaak is [HH]:MM:SS.000000. Dit ondanks dat alleen hele getallen zijn gebruikt, want intern is de elke tijd een gedeelte van de dag, 12:00 ('s middags) is 0,5. Maar er zijn tijden met heel veel decimalen.

    Volgorde van magnitude tussen operanden

    De maximale volgorde van magnitude tussen operanden is kleiner dan 10^15 (1015). Dit is niet gerelateerd aan het weergaveformaat van de cel.

    Voorbeeld, bij het uitvoeren van 1E+9 + 1E-7 kunt u niet het verwachte resultaat krijgen, omdat 9 - (-7) = 16 > 15. Maar aan de andere kant, het uitvoeren van 1E+8 + 1E-6 zal inderdaad resulteren in 100000000.000001 (mogelijk moet u het aantal te tonen decimalen in het formaat verhogen om dit te zien).