如何使用可变精度来java string.format?
-
21-09-2019 - |
题
我想根据用户输入格式化的字符串中的双重表示的精度。现在我正在尝试类似的事情:
String foo = String.format("%.*f\n", precision, my_double);
但是我收到一个 java.util.UnknownFormatConversionException
. 。我对这种方法的灵感是C printf和 这个资源 (第1.3.1节)。
我是否在某处有一个简单的语法错误,Java支持这种情况,还是有更好的方法?
编辑:
我想我可以做类似的事情:
String foo = String.format("%." + precision + "f\n", my_double);
但是我仍然对对这种操作的本地支持感兴趣。
解决方案
您回答了自己的问题 - 动态构建格式字符串...有效格式字符串遵循此处概述的约定: http://java.sun.com/j2se/1.5.0/docs/api/java/java/util/formater.html#syntax.
如果您想要一个格式化的小数,该小数是占8个字符(包括小数点),并且在小数点后想要4位数字,则格式字符串应该看起来像“%8.4F” ...
据我所知,Java中没有格式的字符串灵活的“本地支持”。
其他提示
您可以使用 分数 班级。
double d1 = 3.14159;
double d2 = 1.235;
DecimalFormat df = new DecimalFormat("#.##");
double roundedD1 = df.format(d); // 3.14
double roundedD2 = df.format(d); // 1.24
如果要在运行时间呼叫设置精度:
df.setMaximumFractionDigits(precision)
为什么不 :
String form = "%."+precision+"f\n";
String foo = String.format(form, my_double);
或者 :
public static String myFormat(String src, int precision, Object args...)
{
String form = "%."+precision+"f\n";
return String.format(form, args);
}
不隶属于 StackOverflow