Это float point - числа с плавающей точкой.
Переименую тему, чтобы не было недоразумений.
Если не понятно почему, почитай тут:
fixed pointfloat point
Да, тут задачка немного сложнее, но принцип ее тот же: последовательным делением на 10
n. Число шагов - как бит в мантисе. Стартовый "n" можно определить по floor(ln(X)/ln(10)).
Добавлено через 8 часов, 38 минут и 47 секунд:Но думаю, что быстрее все-таки было бы довести число умножением на 10
lg(M) (степень надо уточнить) до диапазона последней цифры диапазона (18-й значащий десятичный знак до запятой) и сохранил бы как BCD. Т.е. все операции внутри FPU. Потом надо только разобраться с отображением и установкой запятой.