Zwiększona dokładność obliczeń w aplikacjach Pages, Numbers i Keynote

Po uaktualnieniu aplikacji Pages, Numbers i Keynote możesz zauważyć w dokumentach niewielkie zmiany w wynikach obliczeń. Jest to spowodowane wprowadzeniem w najnowszej wersji pakietu iWork uaktualnienia silnika obliczeniowego, który zwraca wyniki z jeszcze większą dokładnością niż wcześniej.

W przypadku większości funkcji widoczne zmiany nie będą obserwowane, ale obliczenia zawierające skrajnie małe liczby, mogą teraz przedstawiać jeszcze dokładniejsze wyniki.

Przykład 1

W poprzednich wersjach aplikacji Numbers, Pages i Keynote działania typu = 10,0 - 9,8 zwracają wartość 0,199999999999999.

Zmiana liczby miejsc po przecinku wyświetlanych w komórce (od 1 do 14 miejsc po przecinku) może rozwiązać problem, prezentując oczekiwany wynik w postaci wartości 0,2. Po zwiększeniu liczby miejsc po przecinku wyświetlanych w komórkach prezentowana wartość wynosi 0,199999999999999000000000000000.

Jest to spowodowane sposobem przechowywania liczb dziesiętnych w systemie binarnym. Przedstawianie liczb dziesiętnych w postaci binarnej może skutkować niewielkimi rozbieżnościami. Silnik obliczeniowy w aplikacjach Pages, Numbers i Keynote zawsze korzystał z dopracowanych technik obliczeniowych, które zapobiegały zwracaniu liczb w postaci zagregowanej, ale przy bardzo wysokich dokładnościach różnice mogą stać się widoczne.

Dzięki wykorzystaniu notacji dziesiętnej podczas obliczeń nowy silnik obliczeniowy znacznie poprawia poprzednie wersje aplikacji.

Wynik tego samego działania = 10,0 - 9,8 zwraca teraz wartość 0,2. Po zwiększeniu liczby wyświetlanych miejsc po przecinku prezentowana wartość wynosi 0,2000000000000000000000000000000.

Przykład 2

W poprzednich wersjach aplikacji Numbers funkcja ZAOKR(8,415;2) zwraca wartość 8,41. Powodem tego również jest wewnętrzne przechowywanie wartości w postaci binarnej.

Po wprowadzeniu nowego silnika obliczeniowego funkcja ZAOKR(8,415;2) zwraca wartość 8,42.

Kodowanie dwójkowo-dziesiętne (BCD) a kodowanie dziesiętne zmiennoprzecinkowe (DFP)

Większość komputerów przechowuje liczby w formie zer i jedynek, które określa się wartościami binarnymi. Proces zwany kodowaniem dwójkowo-dziesiętnym (BCD) konwertuje liczby ułamkowe na ich binarne odpowiedniki. W przypadku kodowania liczb za pomocą kodu BCD niektóre wartości nie mogą być przedstawione z pełną dokładnością. Na przykład 0,2 w postaci binarnej wynosi 0,001100110011... itd. Liczba musi zostać skrócona, aby mogła być zakodowana za pomocą kodu BCD, co nieznacznie zmienia jej przechowywaną wartość. Nawet jeśli rozbieżności wprowadzone przez kodowanie BCD są bardzo niewielkie, to stają się bardziej widoczne po zastosowaniu większej liczby pewnych typów łańcuchów obliczeniowych.

Najnowsze wersje aplikacji Pages, Numbers i Keynote kodują liczby przy użyciu 128-bitowego kodowania dziesiętnego zmiennoprzecinkowego (DFP). Jest to o wiele bardziej dokładny sposób kodowania ułamków dziesiętnych, który pozwala uniknąć błędów zaokrąglania typowych dla kodowania BCD. Ponadto uaktualniony silnik obliczeniowy działa bezpośrednio z liczbami zakodowanymi za pomocą DFP, dzięki czemu wartości przechowywane w komórkach tabeli są dokładniejsze, podobnie jak wyniki obliczeń funkcji.

W przypadku wielu funkcji widoczne zmiany nie będą obserwowane, ale obliczenia zawierające skrajnie małe liczby, mogą teraz przedstawiać jeszcze dokładniejsze wyniki.

Data publikacji: