Как сломать номер на разных частях в Java?
-
26-09-2019 - |
Вопрос
Я хочу сделать следующее: скажем, у меня есть номер 125.625 => Я хотел бы сказать моей программе, которая составляет 1 * 100 + 2 * 10 + 5 * 1 + 0,625. Как я мог это сделать, пожалуйста?
спасибо
Решение
Если у вас есть свой номер как целое число, вы можете сделать что-то вроде этого:
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)
}
Вышеуказанный PSuedoCode заполнит ListOfValuepares с парами цифры и числом размножаться на. Так что вы получите это:
{{1,100}, {2,10}, {5,1}}
И дробная часть имеет этот последний кусок, который вы хотели.
Для справки функция пола () даст номер без дробной части, поэтому этаж (1.6) дает 1. % (модуло) оператор будет более или менее дать остаток после разделения. Так 7% 2 = 1.
Что я делаю в приведенном выше примере (что очень много нет Java Code), получает одну цифру за раз из стоимости.
Так что я начинаю с 125:
125 % 10 = 5
Then:
floor(125 / 10) = floor(12.5) = 12
Затем я повторяю, чтобы получить 2 и 1. В то же время я сохраняю 1, 10 и 100, используя экспонентную переменную.
Другие советы
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
Конечно, вы можете изменить код, чтобы добавить вещи в структуру данных.
Вы можете получить каждую цифру, используя модуль или %
Оператор в цикле для целочисленных значений (т.е. int ones = myVal % 10
), и чтобы получить дробное значение float fraction = val - (int)val;