Какова ожидаемая ошибка при хранении десятичных чисел в виде одинарных чисел?
Я смотрю на задачу C++, которая читает файл, который содержит десятичные числа и сохраняет каждое число в структуре данных как один 4-байтовый float
, Перед изменением процесса (использовать double
) Я хочу знать, какова средняя ошибка в% между числом в файле и числом, хранящимся в структуре.
Например, если файл читает 19.5
и структура данных 19.49999999
тогда ошибка
abs(19.49999999 / 19.5 - 1) = 5.128205128205128e-8 %
Если распределение имеет значение, большинство чисел в файле являются положительными и меньше 1000.
1 ответ
Решение
32-разрядные числа с плавающей запятой имеют 23 бита мантиссы, что означает представление с точностью до 7-8 десятичных цифр. Чтобы быть точным, относительная ошибка 2^-24
или о 6e-8
,