Tablora

Tablora · Biblioteka

Sprawdź 0.10 plus 0.20 za pomocą dokładnych liczb dziesiętnych

Sprawdź arytmetyką dziesiętną, że 0.10 plus 0.20 daje dokładnie 0.30, żeby podaną sumę porównać bez artefaktów wyświetlania liczb zmiennoprzecinkowych.

Dlaczego 0.1 plus 0.2 może wyglądać źle

Wiele programów przechowuje liczby w binarnym zapisie zmiennoprzecinkowym, w którym 0.1 i 0.2 nie mają dokładnej reprezentacji. Po ich dodaniu zapisany wynik jest odrobinę większy niż 0.3; zależnie od formatowania możesz zobaczyć 0.30000000000000004 albo porównanie twierdzące, że wartości nie są równe. Przy uzgadnianiu taki artefakt wygląda jak rozbieżność, której w rzeczywistości nie ma.

Narzędzie do sprawdzania sumy tego unika. Odczytuje każdą wartość jako ciąg dziesiętny, sprowadza wszystkie wartości do tej samej liczby miejsc po przecinku i dodaje je jako liczby całkowite, więc 0.10 i 0.20 dają razem dokładnie 0.30.

Wprowadzanie wierszy

Wynik dla 0.10 i 0.20

Przy wartościach 0.10 i 0.20 oraz Oczekiwanej sumie 0.30 Obliczona suma wynosi 0.30, Różnica wynosi 0.00, a Sumy są zgodne pokazuje Tak. Wynik ma dwa miejsca po przecinku, bo tyle wynosi największa liczba miejsc wśród danych wejściowych i oczekiwanej sumy.

Różnica to zawsze Obliczona suma minus Oczekiwana suma, więc ujemna różnica oznacza, że wprowadzone wiersze nie sięgają podanej kwoty.

Przygotowanie wartości z prawdziwej tabeli

Kwoty skopiowane z wyciągu rzadko mają postać kanoniczną. Najpierw przepuść kolumnę przez narzędzie do ujednolicania liczb, wybierając separator dziesiętny i separator grup używane w dokumencie, a potem skopiuj przekonwertowane wartości do narzędzia do sprawdzania sumy. Wartość, którą narzędzie do ujednolicania odłożyło do sprawdzenia, nie nadaje się jeszcze do sumowania; wyjaśnij ją, zanim zaufasz sumie.

Narzędzie wykonuje dokładne obliczenia na tym, co wprowadzisz, i nic więcej. Nie przelicza walut, nie stosuje podatków ani reguł zaokrąglania i nie mówi, czy wprowadzono każdy rekord.

Dane, które narzędzie odrzuca

Dane wejściowe

Jedna wartość w wierszu
0.10 0.20
Oczekiwana suma
0.30

Wyniki

Obliczona suma
0.30
Różnica
0.00
Sumy są zgodne
Tak