Ответ 1
Плавная точка с двойной точностью имеет следующий формат
- Знак бит: 1 бит
- Ширина экспоненты: 11 бит
- Значимая точность: 53 бит (52 явно сохранены)
Это дает от 15 до 17 значащих десятичных цифр. Если десятичная строка, содержащая не более 15 значащих десятичных знаков, преобразуется в двойную точность IEEE 754, а затем преобразуется обратно к тому же количеству значащих десятичных знаков, то окончательная строка должна соответствовать оригиналу; и если двойная точность IEEE 754 преобразуется в десятичную строку с по меньшей мере 17 значащими десятичными знаками и затем преобразуется обратно в двойную, то окончательное число должно соответствовать оригиналу.
Одинарная точность с плавающей запятой имеет следующий формат
- Знак бит: 1 бит
- Ширина экспоненты: 8 бит
- Значение и точность: 24 (23 явно сохранены)
Это дает от 6 до 9 значащих десятичных цифр (если десятичная строка с не более чем 6 значащими десятичными значениями преобразуется в одиночную точность IEEE 754, а затем преобразуется обратно к тому же числу значащих десятичных знаков, то окончательная строка должна соответствовать оригинал, и если одиночная точность IEEE 754 преобразуется в десятичную строку с не менее чем 9 значащими десятичными знаками, а затем преобразуется обратно в одиночный, то окончательное число должно соответствовать оригиналу.
Максимальная разница, с которой вы сталкиваетесь, указывает на потерю точности, близкую к преобразованию в единую точность.
Знаете ли вы, какой из двух методов более точен? Является ли это компромиссом между скоростью вычислений и точностью, которая является основным отличием или является одним из алгоритмов, которые менее численно устойчивы? Какова точность входных данных? Разница в 8 десятичных цифр точности может быть неактуальной, если ваши входы не так точны... или это может означать отсутствие Марса на планетарной траектории.