Jak się uchronić przed błędnymi wynikami obliczeń w Excelu?

Zrobiłeś bilans aktywów i pasywów. W komórce B8 wpisałeś funkcję sprawdzającą, czy aktywa są równe pasywom. Jednak funkcja ta zwraca błędny wynik.


Rys. 1. Błędny wynik obliczeń w komórce B8

Jeśli zaznaczysz tę komórkę i wybierzesz polecenie menu Narzędzia/Inspekcja formuł/Szacuj formułę, to zauważysz, że wynik dodawania i odejmowania nie jest równy 0, lecz różni się od zera na 13. miejscu po przecinku.


Rys. 2. Sprawdzenie wyników działań arytmetycznych poprzez polecenie Szacuj formuły

Zastanawiasz się, skąd ta różnica. Jest ona wynikiem niedoskonałości liczb z ułamkiem dziesiętnym. Chodzi o to, że liczby takie przechowywane są w postaci zerojedynkowej w określonej jednostce pamięci komputera (z reguły o wielkości 8 bajtów). Nie wszystkie liczby z ułamkiem dziesiętnym mają swoje dokładne odzwierciedlenie w postaci zerojedynkowej w tej jednostce pamięci. Takie liczby są zaokrąglane do najbliższej liczby, która ma swoje odzwierciedlenie w postaci zerojedynkowej. Efekt ten możesz zaobserwować, jeśli niektóre liczby z ułamkiem dziesiętnym wyświetlisz w postaci widocznych kilkunastu miejsc po przecinku.

Złe obliczenia mogą zostać dokonane, jeśli w jednym działaniu użyte są przynajmniej trzy liczby, z których jedna ma ułamek dziesiętny. Aby wynik w komórce B8 był poprawny, należy obliczenia zawrzeć w funkcji ZAOKR. W tym celu zmień formułę na poniższą:

=JEŻELI(ZAOKR(B3+B4-B5-B6;2)=0;"OK";"Błąd")

Wynik obliczeń będzie teraz zaokrąglany do dwóch miejsc po przecinku i nie będzie już ukazywał błędu.


Rys. 3. Bilans aktywów i pasywów po zmianie formuły w komórce B8

Jeśli potrzebujesz dokładniejszych obliczeń, to zaokrąglaj wynik działań arytmetycznych do większej liczby miejsc po przecinku.

Zaloguj się, aby dodać komentarz

Nie masz konta? Zarejestruj się »

Zobacz także

Skuteczne narzędzia do wykrywania uszkodzonych podzespołów

pobierz

Wykrywanie i usuwanie niechcianych programów

pobierz

Polecane artykuły

Array ( [docId] => 49685 )

Array ( [docId] => 49685 )
Array ( [docId] => 49685 )