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

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

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

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

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

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

    я использую

     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);