Как разбить число на разные части в Java? - PullRequest
2 голосов
/ 30 сентября 2010

Я собираюсь сделать следующее: допустим, у меня есть число, например 125.625 => Я бы хотел сказать моей программе, что это 1 * 100 + 2 * 10 + 5 * 1 + 0.625. Как я мог сделать это, пожалуйста?

спасибо

Ответы [ 3 ]

3 голосов
/ 30 сентября 2010
double num = 125.625;
System.out.print(num - (int)num);
num = (int) num;

for (int i=10; num!=0; i*=10) {
    System.out.print(" + " + i/10 + " * " + (num % i)/i*10);
    num -= num % i;
}

Напечатает:

0.625 + 1 * 5.0 + 10 * 2.0 + 100 * 1.0

Конечно, вы можете изменить код, чтобы добавить материал в структуру данных.

3 голосов
/ 30 сентября 2010

Если ваш номер является целым числом, вы можете сделать что-то вроде этого:

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, используя переменную экспоненты.

0 голосов
/ 30 сентября 2010

Вы можете получить каждую цифру, используя оператор по модулю или % в цикле для целочисленных значений (т.е.: int ones = myVal % 10), а для получения дробного значения выполните float fraction = val - (int)val;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...