Страницы

Поиск по вопросам

среда, 3 апреля 2019 г.

Как переместить запятую

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); }
Надеюсь мой ответ помог вам.

Комментариев нет:

Отправить комментарий