Содержимое

# Точность вычисления LibreOffice

## Вложенная проблема точности

LibreOffice Calc, также как и большинство других программ электронных таблиц, использует аппаратные возможности выполнения операций с плавающей точкой. Учитывая, что большая часть современных аппаратных средств использует двоичную арифметику с плавающей точкой ограниченной точности в соответствии со стандартном IEEE 754, многие десятичные числа - включая такие простые как 0.1 - не могут быть точно представлены в LibreOffice Calc (в котором используется внутреннее представление в 64-разрядных числах двойной точности).

Вычисления с этими числами необходимо приводят к погрешностям округления, которые накапливаются с каждым вычислением.

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

Пример с числами:

| A
1 | 31000.99
2 | 32000.12
3 | =A1-A2

Результатом вычисление будет -999.129999999997 в A3, вместо ожидаемого -999.13 (возможно в формате ячейки потребуется увеличить отображаемое число разрядов после десятичной точки для отображения этого числа).

См. также

ВЫЧЕСТЬ