Если ваш номер является целым числом, вы можете сделать что-то вроде этого:
value := 125.625
fractional part := value % 1
value := floor(value)
exponent = 1
listofvaluepairs = array()
while(value > 0)
{
tmp_part := value % 10
listofvaluepairs.add(value, exponent)
exponent = exponent * 10
value = floor(value / 10)
}
Приведенный выше псевдокод заполнит список значений пар парами цифр и чисел, на которые нужно умножить. Итак, вы получите это:
{{1,100}, {2,10}, {5,1}}
А у дробной части есть последний кусок, который вы хотели.
Для справки, функция floor () даст число без дробной части, поэтому floor (1.6) даст 1. Оператор % (по модулю) более или менее даст остаток после деления. Так 7% 2 = 1.
Что я делаю в приведенном выше примере (который очень не Java-код), так это получение одной цифры за раз от значения.
Итак, я начинаю с 125:
125 % 10 = 5
Then:
floor(125 / 10) = floor(12.5) = 12
Затем я повторяю, чтобы получить 2 и 1. В то же время я сохраняю 1, 10 и 100, используя переменную экспоненты.