#java #android
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 Что я делаю не так?
Ответы
Ответ 1
Немного теории: Для того чтобы вернуть данные, вам необходимо отформатировать их. Для этого можно использовать метод .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); } Надеюсь мой ответ помог вам.
Комментариев нет:
Отправить комментарий