Как обменять сумму денег на банкноты и монеты
Как я могу обменять определенное количество денег на банкноты и монеты? Допустим, ввод - 1234,26, и у нас есть заметки на 1000, 500, 200, 100, 50 и монеты на 20, 10, 1 и 0,5? таким образом, если входное значение больше 0,25 и меньше 0,75, оно должно быть округлено до 1х 0,5, если оно находится между 0,75 и 1,00, оно должно быть округлено до 1х 1, а если оно меньше 0,25, оно должно быть округлено до нуля? В этой конкретной программе желаемый результат будет выглядеть примерно так:
1x: 1000
1x: 200
1x: 20
1x: 10
4x: 1
1x: 0.5
если бы это было не для монеты 0,5, я думаю, что я мог бы сделать это, используя int и%, но на данный момент я почти ничего не понимаю (думаю, что я должен использовать массив, но я не уверен, как) и не имею Идея с чего начать. Также я начинающий, если вы можете иметь это в виду, когда отвечаете и объясняете! какие-либо советы / решения? заранее спасибо!
как это?:
System.out.println((input/1000) + " thousand " + ((input/500)%2) + " fivehundred " + (input/200%2.5) + " two hundred " + (input/100%2) + " hundred " + (input/50%2) + " fifty " + (input/20%2.5) + " twenty " + (input/10%2) + " ten " + input/1%10 + " one " );
Я до сих пор не знаю, что делать с 0,5, так как я должен использовать int, вводя только потому, что если я использую double, я получаю его полностью неправильно, я также должен использовать оператор if для монеты 0.5..
1 ответ
Я считаю, что это стандартный подход к такого рода вопросам.
double input = 1234.26;
int thousands = input/1000;
input = input - 1000*thousands; //So now it would 234,26
int fivehundreds = input/500;
input = input - 500*fivehundreds;
etc...
Правильно, но вы не можете конвертировать из double в int (то есть, тысячи - это int, но input - это double, поэтому input/1000 - это double). Итак, у вас есть несколько вариантов:
- Заработай тысячи, пятьсот и т. Д. Это довольно уродливо, однако, они никак не будут иметь десятичное значение
- Кастинг что-нибудь значит для тебя? Например,
(int)int thousands = input/1000;
буду работать. Вы можете прочитать о "приведении", но в основном я просто говорю Java, чтобы рассматривать это число как целое число, а не как двойное - Сохраняйте ввод как int и округляйте его. Затем просто проверьте в конце, имеет ли оно десятичное значение (
input % 1 > 0
), и если это произойдет, вам нужно полдоллара.