public static void main(String args[]) {
System.out.println(convert("5"));
System.out.println(convert("56"));
System.out.println(convert("560"));
System.out.println(convert("5600"));
}
public static double convert(String str){
double asd=Double.valueOf(str);
return asd/100;
}
0.05
0.56
5.6
56.0
Все работает кроме 2 последних чисел.
Проблема в том что должно быть 5.60 и 56.00.
А мы имеем 5.6 и 56.0
Что я делаю не так?
Ответ
Немного теории:
Для того чтобы вернуть данные, вам необходимо отформатировать их. Для этого можно использовать метод .format() из класса String, который вернет отформатированные данные в качестве строки.
public PrintStream format(String format, Object... args)
String format - это строка, определяет шаблон, согласно которому будет происходить форматирование.
Object... args - это аргументы, на которые ссылаются спецификаторы формата в строке формата. Если аргументов больше, чем спецификаторов формата, дополнительные аргументы игнорируются. Число аргументов является переменной и может быть нулевым. Максимальное количество аргументов ограничено максимальным размером массива Java, как определено Спецификацией виртуальной машины Java ™. Поведение на нулевом аргументе зависит от преобразования.
Взято из офф. документации Oracle
Согласно заданному нами шаблону мы берем аргумент под номером %1$ и говорим что нужно вывести .2f- два знака после запятой.
Решение:
Измените свою функцию Convert следующим образом:
public String convert(String str) {
double myDouble = Double.valueOf(str) / 100;
return String.format("%1$,.2f", myDouble);
}
Надеюсь мой ответ помог вам.
Комментариев нет:
Отправить комментарий