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