Как эффективно использовать оператор модуля в Java
Я выполняю задание колледжа на Java, которое связано с валютой. Для этого мне советуют использовать ints вместо double, а затем позже преобразовать его в долларовое значение, когда я распечатаю заявление.
Все работает нормально, пока я не сделаю вычисления на число 4005 (как в $40.05, представленном в виде int). Я вставляю ту часть кода, с которой у меня возникли проблемы, я был бы признателен, если бы кто-то мог сказать мне, что я делаю неправильно.
import java.io.*;
class modumess {
public static void main(String[] args) {
int money = 4005; //Amount in cents, so $40.05;
// Represent as normal currency
System.out.printf("$%d.%d", money/100, money%100);
}
}
Приведенный выше код при запуске показывает $40.5, вместо $ 40,05. Что это дает?
Пожалуйста, обратите внимание, что это для моего домашнего задания, и я хочу учиться, поэтому я был бы очень признателен за объяснение о корне проблемы здесь, а не просто простое решение.EDIT: следуя ответу Финбарра, я добавил следующее в код, который, похоже, исправил проблему:
if (money%100 < 10) {
format = "$%d.0%d";
}
Это хороший способ сделать это, или я слишком усложняю ситуацию?
EDIT: я просто хочу, чтобы было ясно, что это были оба Финбарра и ответ Уэса, который помог мне, я принял ответ Уэса, потому что это прояснило для меня, как действовать дальше.
2 ответа:
Лучшим способом было бы что-то вроде этого для общего случая:
format = "%d.%02d";
%02d
дает вам 0 отступов для 2 цифр. Таким образом, вам не нужно дополнительное утверждение if.Смотрите это для более подробного объяснения того, что вы можете сделать в формате: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax