在 C 中,printf() 语句允许在参数列表中提供精度长度。
printf("%*.*f", 7, 3, floatValue);
其中星号分别替换为第一个和第二个值。
我正在寻找 Android/Java 中的等价物;String.format() 抛出异常。
编辑:谢谢,@Tenner;它确实有效。
在 C 中,printf() 语句允许在参数列表中提供精度长度。
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));
这将打印精度为 1 位小数的 floatValue
您可以格式化格式:
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);