Это вопрос домашней работы, поэтому делать что-то, как вы на самом деле делаете в реальном мире (то есть, используя метод форматирования String, как Маргус сделал ), не разрешается. Я вижу три ограничения на любой ответ с учетом того, что содержится в вашем вопросе (если это не действительно ограничения, вам нужно перефразировать свой вопрос!)
- Должен принимать число с плавающей точкой как вход (и, если возможно, использовать только числа с плавающей точкой)
- Необходимо использовать оператор остатка (%) и деления (/)
- Входное число с плавающей точкой должно иметь четыре цифры до и после десятичной точки и, тем не менее, давать правильный ответ.
Ограничение 1. - это полная боль, потому что вы будете очень легко бить себя по точности с плавающей запятой, если вам придется использовать число из четырех цифр до и после десятичной запятой.
float inputNumber = 1234.5678f;
System.out.println(inputNumber % 0.1);
печать "0.06774902343743147"
приведение входного числа к двойному вызывает больше головной боли:
float one = 1234.5678f;
double two = (double) one;
печатает "1234.5677490234375" (примечание: при округлении ответа вы получите 1234.5677, что! = 1234.5678)
Если честно, меня это действительно озадачило, я потратил слишком много времени, пытаясь понять, как обойти проблему точности. Я не смог найти способ заставить эту программу работать для 1234.5678f, но она работает для значения asker 1349.9431f.
float input = 1349.9431f;
float inputCopy = input;
int numberOfDecimalPoints = 0;
while(inputCopy != (int) inputCopy)
{
inputCopy = inputCopy * 10;
numberOfDecimalPoints++;
}
double inputDouble = (double) input;
double test = inputDouble * Math.pow(10, numberOfDecimalPoints);
long inputLong = Math.round(test);
System.out.println(input);
for(int divisor = 10; divisor < Math.pow(10, numberOfDecimalPoints); divisor = divisor * 10)
{
long printMe = inputLong - (inputLong % divisor);
System.out.println(printMe / Math.pow(10, numberOfDecimalPoints));
}
Из моих трех ограничений я удовлетворил 1 (вид), 2, но не 3, поскольку он сильно зависит от стоимости.
Мне очень интересно посмотреть, что могут придумать другие ТАКИЕ люди. Если спрашивающий правильно разобрал инструкции, это очень плохое упражнение, ИМО.