在C中,printf()语句允许在参数列表中提供精度长度。java等价于printf(“%*。* f”)
printf("%*.*f", 7, 3, floatValue);
其中星号分别被替换为第一和第二值。
我正在寻找Android/Java中的等价物; String.format()抛出一个异常。
编辑:谢谢@Tenner;它确实有效。
在C中,printf()语句允许在参数列表中提供精度长度。java等价于printf(“%*。* f”)
printf("%*.*f", 7, 3, floatValue);
其中星号分别被替换为第一和第二值。
我正在寻找Android/Java中的等价物; String.format()抛出一个异常。
编辑:谢谢@Tenner;它确实有效。
我用
int places = 7;
int decimals = 3;
String.format("%" + places + "." + decimals + "f", floatValue);
难看一点(和字符串连接使得它表现不好),但它的作品。
System.out.print(String.format("%.1f",floatValue));
这将输出的floatValue带1位小数的精度
它是这样的...
%AFWPdatatype
A
- 参数
F
数 - 旗
W
- 宽度
P
- 精密
String.format("%.1f",float_Val);
你可以格式化格式:
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那样漂亮,输入格式可能会变得混乱,但你可以用更多的东西来做。
您可以直接在这里使用System.out.format(...) – RNJ
@BelusC有两个。请参阅http://docs.oracle.com/javase/1.5.0/docs/api/java/io/PrintStream.html#format%28java.lang.String,%20java.lang.Object...%29 – RNJ