Я хочу сделать следующее: допустим, у меня есть число, подобное 125.625 => Я хотел бы сказать, что моя программа 1 * 100 + 2 * 10 + 5 * 1 + 0.625. Как я могу это сделать, пожалуйста?Как разбить число на разные части Java?
благодаря
Я хочу сделать следующее: допустим, у меня есть число, подобное 125.625 => Я хотел бы сказать, что моя программа 1 * 100 + 2 * 10 + 5 * 1 + 0.625. Как я могу это сделать, пожалуйста?Как разбить число на разные части Java?
благодаря
Если у вас есть свой номер, как целое, вы могли бы сделать что-то вроде этого:
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 заполнит listofvaluepairs с парами цифры и числа умножить на , Так что вы получите это:
{{1,100}, {2,10}, {5,1}}
И дробная часть имеет ту последнюю часть, которую Вы хотели.
Для справки, функция floor() даст номер без дробной части, поэтому пол (1,6) дает 1. % (modulo) operator будет более или менее отдавать остаток после деления. Таким образом, 7% 2 = 1.
Что я делаю в приведенном выше примере (это очень не java-код), получает по одной цифре за раз от значения.
Так я начинаю с 125:
125 % 10 = 5
Then:
floor(125/10) = floor(12.5) = 12
Тогда я повторяю, чтобы получить 2 и 1. В то же время я спасительной 1, 10 и 100 с помощью переменной экспоненты.
Вы можете получить каждую цифру с помощью модуля или %
оператора в цикле для целочисленных значений (то есть: int ones = myVal % 10
), и получить дробное значение сделать float fraction = val - (int)val;
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
Конечно, вы можете изменить код, чтобы добавить материал в структуру данных.
+1. Кстати, вы, люди, должны воздерживаться от выполнения своих заданий, особенно когда вы не видите никаких усилий с их стороны. –
Если кто-то хочет ответить на домашнюю работу парня, это нормально. OP может легко узнать больше, видя чей-то правильный ответ, а не писать хардкоры, которые вы делаете в школе. Все зависит от того, что он хочет выбраться из этого. –
@ Андрю Хаббс: Вы не можете просто научиться, наблюдая, как кто-то плавает. Аналогия здесь тоже подходит, ИМО. Таким образом, они должны попытаться выйти с кодом, независимо от того, взломщик. По крайней мере, поставите свой мозг на работу и попытайтесь решить проблему. Его хорошо понять, читая чужой код. Но писать собственный код - это совсем другой опыт. И я считаю, что эти хитроумные люди действительно дают вам некоторые ценные навыки. –
ничего себе, что было блестящим. Не могли бы вы объяснить математику за этим. потому что я собирался сделать это долгий путь. который должен был преобразовать число в строку, затем разбить число вверх и начать, а затем делать некоторые следующие длинные вещи со строкой. который, как я знал, был бы неправильным способом решить его в любом случае. но как работают ваши математики? им не знакомы с такими словами, как показатель экспоненты и пола, и так далее. не могли бы вы рассказать мне, как работает ваш код? спасибо .. причина, почему это потому, что я хочу понять логику, стоящую за ней, поэтому я могу применить ее в другом месте, а не просто копировать и вставлять ее. – Pavan
@JoshD: Вы полностью пропустили десятичную часть, приятель. –
@ Adeel Ansari: он находится в «дробной части». Это вторая строка. (Имейте в виду, что это psuedocode.) – JoshD