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

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

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

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

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

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

Solutions Collecting From Web 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);