Форматирование целых чисел
Вывод целого числа
System.out.printf("%d", 7845); // --> "7845"
Вывод целого числа с разделением тысяч
System.out.printf("%,d", 7845); // --> "7 845"
Число менее 7 знаков будет «подвинуто» вправо на недостающее количество знаков.
System.out.printf("%7d", 7845); // --> " 7845"
Число менее 7 знаков будет дополнено нулями слева на недостающее количество знаков.
System.out.printf("%07d", 7845); // --> "0007845"
Число будет дополнено знаком + и, если оно менее 7 знаков, то будет дополнено нулями на недостающее количество знаков.
System.out.printf("%+07d", 7845); //--> "+007845"
Число будет выровнено по левому краю и, если оно менее 7 знаков, то будет дополнено пробелами справа на недостающее количество знаков.
System.out.printf("%-7d", 7845); // --> "7845 "
Разумеется вместо 7 можно использовать любое другое положительное целое число.
Форматирование чисел с плавающей точкой
Вывод числа e. Автоматическое округление до 6 знаков после запятой.
System.out.printf("%f", Math.E); // --> "2,718282"
Число менее 10 знаков будет «подвинуто» вправо на недостающее количество знаков.
System.out.printf("%10f", Math.E); // --> " 2,718282"
Число менее 10 знаков будет дополнено нулями слева на недостающее количество знаков.
System.out.printf("%010f", Math.E); // --> "002,718282"
Число будет дополнено знаком + и, если оно менее 10 знаков, то будет дополнено нулями на недостающее количество знаков.
System.out.printf("%+010f", Math.E); // --> "+02,718282"
Число будет выведено с 15 знаками после запятой.
System.out.printf("%.15f", Math.E); // --> "2,718281828459045"
Число будет выведено с 3-мя знаками после запятой и, если оно менее 8 символов, то будет «подвинуто» вправо на недостающее количество знаков.
System.out.printf("%8.3f", Math.E); // --> " 2,718"
Число будет выровнено по левому краю, выведено с 3-мя знаками после запятой и, если оно менее 8 знаков, то будет дополнено пробелами справа на недостающее количество знаков.
System.out.printf("%-8.3f", Math.E); // --> "2,718 "
Форматирование строк
Вывод строки.
System.out.printf("%s%n", "Hello"); // --> "Hello"
Если строка содержит менее 10 символов, то «подвинуть » ее вправо на недостающее количество символов.
System.out.printf("%10s%n", "Hello"); // --> " Hello"
Строка будет выровнена по левому краю и, если она менее 10 символов, то будет дополнена справа пробелами на недостающее количество символов.
System.out.printf("%-10s%n", "Hello"); // --> "Hello "
Выведет первые 3 символа строки.
System.out.printf("%.3s%n", "Hello"); // --> "Hel"
Выведет первые 3 символа строки и подвинет их вправо на недостающее до 8 количество символов.
System.out.printf("%8.3s%n", "Hello"); // --> " Hel"
Локализация
В разных странах некоторые записи принято производить по-разному. Например, в одних странах дробное число принято писать с точкой «3.68», а в других с запятой «3,68». Java нам позволяет соблюдать эти традиции. Метод printfимеет еще одну сигнатуру:
printf(Locale l, String format, Object… args)
Первым аргументом стоит Locale l, который и определяет локализацию. Для того, чтобы использовать локализацию необходимо вначале файла с вашим кодом импортировать библиотеку java.util.Locale.
import java.util.Locale;
Рассмотрим несколько примеров применения:
System.out.printf(Locale.ENGLISH,"%,d%n", 1000000 );// 1,000,000
System.out.printf(Locale.GERMAN,"%,d%n", 1000000 ); // 1.000.000
System.out.printf(Locale.FRANCE,"%,d%n", 1000000 ); // 1 000 000
В зависимости от указанной страны используются разные разделители для тысяч.
System.out.printf(Locale.ENGLISH,"%.2f%n", 9.87 ); //9.87
System.out.printf(Locale.FRANCE,"%.2f%n", 9.87 ); //9,87
В зависимости от указанной страны используются разные разделители у дробных чисел.