Конечно, большинство языков имеют библиотечные функции для этого, но предположим, что я хочу сделать это сам.
Предположим, что float задан как в C или Java-программе (кроме суффикса 'f' или 'd'), например "4.2e1", ".42e2" или просто "42", В общем случае мы имеем "целую часть" перед десятичной точкой, "дробную часть" после десятичной точки и "показатель". Все три являются целыми числами.
Легко найти и обработать отдельные цифры, но как их скомпилировать в значение типа float или double без потери точности?
Я думаю о том, чтобы умножить целочисленную часть на 10 ^ n, где n - число цифр в дробной части, а затем добавление дробной части в целую часть и вычитание n из экспоненты. Например, это эффективно превращает 4.2e1 в 42e0. Затем я мог бы использовать функцию pow для вычисления показателя 10 ^ и умножить результат на новую целочисленную часть. Вопрос в том, гарантирует ли этот метод максимальную точность во всем?
Любые мысли об этом?