Java эквивалентно printf ("% *. * F")

В C оператор printf () позволяет указать длину точности в списке параметров.

printf("%*.*f", 7, 3, floatValue); 

Где звездочки заменяются на первое и второе значения соответственно.

Я ищу эквивалент в Android / Java; String.format () выдает исключение.

EDIT: Спасибо, @Tenner; Это действительно работает.

Solutions Collecting From Web of "Java эквивалентно printf ("% *. * F")"

я использую

 int places = 7; int decimals = 3; String.format("%" + places + "." + decimals + "f", floatValue); 

Немного уродливое (и конкатенация строк делает его неэффективным), но он работает.

 System.out.print(String.format("%.1f",floatValue)); 

Это печатает значение floatValue с точностью до 1 десятичной точки

Вы можете форматировать формат:

 String f = String.format("%%%d.%df", 7, 3); System.out.println(f); System.out.format(f, 111.1111); 

Это будет выводить:

 %7.3f 111,111 

Вы также можете использовать небольшой помощник:

 public static String deepFormatter(String format, Object[]... args) { String result = format; for (int i = 0; i != args.length; ++i) { result = String.format(result, args[i]); } return result; } 

Следующий вызов затем будет эквивалентен приведенному выше коду и возвращает 111,111 .

 deepFormatter("%%%d.%df", new Object[] {7, 3}, new Object[] {111.1111}); 

Это не так красиво, как printf, и формат ввода может стать загроможденным, но вы можете сделать гораздо больше с ним.

Это вот так…

 %AFWPdatatype 

A – количество аргументов

F – флаги

W – ширина

P – Точность

String.format("%.1f",float_Val);