Ответ 1
Я думаю, что вы упустили что-то, используя System.out.printf(), если вы не указали ширину форматирования, а затем поведение по умолчанию printf в C (которое равно 6 десятичным разрядам, если явно не указано)
Поэтому, если вы не укажете номер до %f
, тогда по умолчанию будет напечатан только 1 символ. Однако, если вы хотите изменить число после десятичного знака, вам нужно указать его как %.2f
, это напечатает число до двух знаков после запятой.
Таким образом, это похоже на запись типа
System.out.printf("%f",2.00-1.10);
или
System.out.printf("%.1f",2.00-1.10);
В качестве общего синтаксиса для спецификатора формата для float:
%[flags][width][.precision][argsize]typechar
На боковой ноте: -
Также есть класс formatter в Java.
Интерпретатор для строк формата printf. Этот класс обеспечивает поддержка выравнивания и выравнивания макета, общие форматы для числовые, строковые и дата/время, а также выходные данные, специфичные для локали. Общие типы Java, такие как байт, BigDecimal и календарь, поддерживается. Ограниченная настройка форматирования для произвольных типов пользователей обеспечивается через интерфейс Formattable.
Если точность не указана, значение по умолчанию равно 6. Если точность меньше числа цифр, которые появятся после десятичная точка в строке, возвращаемой Float.toString(float) или Double.toString(double) соответственно, то значение будет округлено используя алгоритм round half up.