java相当于printf(“%*。* f”)

在C中,printf()语句允许在参数列表中提供精度长度。

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

星号分别replace为第一和第二值。

我正在寻找Android / Java中的等价物; String.format()引发exception。

编辑:谢谢@Tenner; 它确实有效。

    Related of "java相当于printf(“%*。* f”)"

    我用

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

    有点丑陋(和string连接使得它不能很好地运行),但它的工作原理。

     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那样漂亮,input格式可能变得混乱,但是你可以用更多的东西来做。

    就像这样…

     %AFWPdatatype 

    A – 参数的数量

    F – 标志

    W – 宽度

    P – 精度

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