如何使用Java字符串。以可变精度格式化?
我想根据用户输入改变正在格式化的字符串中双精度表示的精度。现在我正在尝试这样的事情:
String foo = String.format("%.*f\n", precision, my_double);
然而,我收到了一封java.util.UnknownFormatConversionException
。我对这种方法的灵感来自C printf和this resource(第1.3.1节)
我是否有一个简单的语法错误,Java支持这种情况,还是有更好的方法
编辑:
我想我可以这样做:
String foo = String.format("%." + precision + "f\n", my_double);
但我仍然对这种行动的本土支持感兴趣
# 1 楼答案
你回答了自己的问题——动态构建格式字符串。。。有效的格式字符串遵循此处概述的约定:http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax
如果您想要一个总共占用8个字符(包括小数点)的格式化小数,并且想要小数点后有4位数字,那么格式字符串应该类似于“%8.4f”
据我所知,除了灵活的格式字符串之外,Java中没有“本机支持”
# 2 楼答案
您可以在运行时设置n的值。根据上面给出的代码,n=5将打印3.14159
# 3 楼答案
可以使用DecimalFormat类
如果要在运行时设置精度,请调用:
# 4 楼答案
为什么不:
或者: