Улучшение точности вычислений в Pages, Numbers и Keynote

После обновления программ Pages, Numbers и Keynote результаты вычислений в документах могут незначительно измениться. Это связано с тем, что в последней версии iWork обновлен вычислительный процессор и улучшилась точность вычислений.

При использовании большинства формул разница будет незаметна, но точность может улучшиться для операций с очень маленькими числами или вычислений, результатом которых являются такие числа.

Пример 1

В предыдущих версиях Numbers, Pages и Keynote результатом вычисления = 10,0 – 9,8 будет значение 0,199999999999999.

Изменив количество знаков после запятой, которое отображается в ячейке, и установив величину от 1 до 14, можно получить ожидаемый результат со значением 0,2. При увеличении количества отображаемых знаков после запятой в ячейке отобразится значение 0,199999999999999000000000000000.

Это связано с тем, что для выполнения вычислений десятичные числа сохраняются в памяти в двоичном представлении. Двоичные представления десятичных чисел незначительно отличаются от их фактического значения. В программах Pages, Numbers и Keynote применяются дополнительные вычислительные поправки, которые позволяют минимизировать влияние накопленных расхождений. Однако при вычислениях с высокой точностью эти различия могут повлиять на финальный результат.

Алгоритмы нового вычислительного процессора значительно улучшены благодаря сохранению чисел в десятичном представлении.

В новой версии результатом этого вычисления = 10,0 – 9,8 будет значение 0,2. При увеличении количества отображаемых знаков после запятой будет получено значение 0,2000000000000000000000000000000.

Пример 2

В предыдущих версиях программы Numbers формула ОКРУГЛ(8,415; 2) возвращает значение 8,41. Этот результат тоже объясняется тем, что во время вычислений числа с десятичной точкой сохраняются в памяти в двоичном представлении.

В новом вычислительном процессоре формула ОКРУГЛ(8,415; 2) возвращает значение 8,42.

Разница между двоично-десятичной и десятичной формой кодирования с плавающей точкой десятичных чисел

Большинство компьютеров сохраняет числа в двоичном формате, представляющем последовательность единиц и нулей. В процессе двоично-десятичного кодирования дробные числа преобразуются в двоичный формат. При этом некоторые значения сохраняются с некоторой потерей точности. Например, значение 0,2 в двоичном представлении записывается как 0,001100110011... (0011 в периоде). При двоично-десятичном кодировании это значение обрезается и сохраняется в памяти с незначительным отклонением от фактического значения. Несмотря на малую величину таких расхождений, в ходе определенных вычислительных преобразований они могут накапливаться.

В последних версиях программ Pages, Numbers и Keynote для кодирования десятичных чисел используется 128-битный алгоритм с плавающей точкой. Благодаря этому дробные десятичные числа сохраняются более точно, а также устраняются ошибки из-за двоично-десятичного кодирования. Кроме того, вычислительные операции производятся непосредственно с числами в десятичном представлении. Значения в ячейках таблиц сохраняются точнее, а формулы на базе этих значений выполняют вычисления тщательнее.

При использовании большинства формул разница будет незаметна, но точность может улучшиться для операций с очень маленькими числами или вычислений, результатом которых являются такие числа.

Дата публикации: