Tablora

Tablora · Bibliotheek

0.10 plus 0.20 met exacte decimalen controleren

Controleer met decimaal rekenen dat 0.10 plus 0.20 precies 0.30 geeft, zodat een opgegeven totaal zonder weergavefouten van drijvende komma wordt vergeleken.

Waarom 0.1 plus 0.2 fout kan lijken

Veel programma's slaan getallen op als binaire drijvendekommagetallen, waarin 0.1 en 0.2 geen exacte weergave hebben. Tel je ze op, dan ligt het opgeslagen resultaat een haar boven 0.3; afhankelijk van de opmaak zie je 0.30000000000000004 of een vergelijking die zegt dat de waarden niet gelijk zijn. Bij een afstemming lijkt zo'n artefact op een verschil dat er in werkelijkheid niet is.

De controle van de decimale som voorkomt dat. Ze leest elke waarde als decimale tekenreeks, brengt alle waarden op hetzelfde aantal decimalen en telt ze op als hele getallen, zodat 0.10 en 0.20 precies 0.30 opleveren.

De regels invoeren

Resultaat voor 0.10 en 0.20

Met de waarden 0.10 en 0.20 en een Verwacht totaal van 0.30 bedraagt het Berekend totaal 0.30, het Verschil 0.00 en toont Totalen komen overeen Ja. Het resultaat houdt twee decimalen, omdat dat het grootste aantal decimalen onder de invoer en het verwachte totaal vormt.

Het Verschil luidt altijd Berekend totaal min Verwacht totaal, dus een negatief verschil betekent dat de ingevoerde regels onder het opgegeven bedrag blijven.

Waarden uit een echte tabel voorbereiden

Bedragen die je uit een afschrift kopieert, komen zelden in canonieke vorm binnen. Haal de kolom eerst door de normalisator, met het decimaalteken en het groeperingsteken die het document gebruikt, en kopieer daarna de omgezette waarden naar de controle. Een waarde die de normalisator ter controle vasthield, hoort nog niet in de som; los die eerst op voordat je het totaal vertrouwt.

De controle rekent exact met wat je invoert en met niets anders. Ze rekent geen valuta's om, past geen belasting- of afrondingsregels toe en vertelt je niet of elk record ingevoerd werd.

Invoer die de controle weigert

Invoer

Eén waarde per regel
0.10 0.20
Verwacht totaal
0.30

Resultaten

Berekend totaal
0.30
Verschil
0.00
Totalen komen overeen
Ja