Может показаться, что числа с плавающей запятой отображаются.Единичная система испытанийс большим числом десятичных знаков. Однако число показанных цифр выбрано, чтобы избежать, по-видимому, бессмысленных дисплеев, таких как<[1.00000!=1.00000]>, при сравнении точного единства со значением, которое увеличивается всего на одну наименее значимую двоичную цифру, используя точность по умолчанию для плавания всего 6 десятичных цифр, приведенных<std::numeric_limits<float>::digits10>. Функция, используемая для числа отображаемых десятичных цифр, предложена для будущего C++. Стандартно,Предложение добавить максимальное значение десятичных знаков, которое будет называться<std::numeric_limits::max_digits10();>. Для 32-битных поплавков требуется 9 десятичных цифр, чтобы гарантировать, что одно битовое изменение создает другую десятичную строку.
Таким образом, гораздо более полезным является отображение с использованием 9 десятичных цифр:<[1.00000000!=1.00000012]>, показывающее, что два значения на самом деле разные.
ДляIEEE754показаны 32-битные значения поплавка — 9 десятичных цифр. Для 64-битныхIEEE754двойные — 17 десятичных цифр. ДляIEEE754удлиненный длинный двойник с использованием 80-битных - 21 десятичных цифр. ДляIEEE754четверной длинный двойной 128-битный, а SPARC удлиненный длинный двойной 128-битный - 36 десятичных цифр. Для типов с плавающей точкой удобная формула для вычисления<max_digits10>:<2+std::numeric_limits<FPT>::digits*3010/10000>;
Note
Обратите внимание, что пользователь, заданный тип плавающей точки UDFPT, должен определить<std::numeric_limits<UDFPT>::is_specialized=true>и предоставить соответствующее значение для<std::numeric_limits<UDFPT>::digits>, количество битов, используемых для знаковой или мантиссы. Например, для SPARC удлиненного длинного двойника 128 используются 113 бит для знакового и (один из которых неявный).
Статья Logging floating point type numbers раздела Boost.Test Tools supports for logging может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.