Чтобы узнать, что такое округленный результат, необязательно знать все биты точного результата (которых может быть бесконечно много). Нужно только знать биты до того, что соответствует значению и следующему биту, и все ли оставшиеся биты равны нулю. Это приводит к четырем случаям (для округления до ближайших связей к четным):
- Следующий бит после того, что подходит, равен нулю, а все остальные биты равны нулю: ответ точный; ошибки нет.
- Следующий бит равен нулю, но неверно, что все остальные биты равны нулю: округление вниз.
- Следующий бит равен единице, а все остальные биты равны нулю: ошибка равна ½ ULP, поэтому округляется до четного.
- Следующий бит равен единице, но неверно, что все остальные биты равны нулю: округление в большую сторону.
Для простых арифметических операций, таких как сложение, вычитание, умножение и деление, эта информация легко доступна путем вычисления фиксированного числа дополнительных битов или анализа других данных, полученных во время операции (например, остатка, вычисленного при выполнении длинного деления) .
Для сложных функций, таких как тригонометрические функции, у нас нет полных доказательств, характеризующих работу, необходимую для получения необходимой информации. Большинство математических библиотек реализуют версии этих функций, которые, как гарантируют, не будут правильно округлены. Если требуется правильное округление, реализация может использовать арифметику произвольной точности, чтобы продолжить уточнение ответа, пока не определит, находится ли результат выше или ниже точки округления (½ ULP).