如何使用可变精度的Java String.format?
我想允许用户改变从 double
生成的 String
的精度。现在,我正在尝试类似的方法,
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);
,但我仍然对此类操作的本机支持感兴趣。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您有点回答了自己的问题 - 动态构建格式字符串...有效的格式字符串遵循此处概述的约定: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax。
如果您想要一个总共占用 8 个字符(包括小数点)的格式化小数,并且您想要小数点后 4 位数字,那么您的格式字符串应该类似于“%8.4f”...
据我所知,没有“本机支持” “在 Java 中,格式字符串比灵活的更灵活。
You sort of answered your own question - build your format string dynamically... valid format strings follow the conventions outlined here: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax.
If you want a formatted decimal that occupies 8 total characters (including the decimal point) and you wanted 4 digits after the decimal point, your format string should look like "%8.4f"...
To my knowledge there is no "native support" in Java beyond format strings being flexible.
您可以使用 DecimalFormat 类。
如果您想在运行时设置精度,请调用:
You can use the DecimalFormat class.
If you want to set the precision at run time call:
为什么不:
或:
Why not :
or :
您可以在运行时设置n的值。从上面的代码中给出的 n = 5 将打印 3.14159
You can set value of n at runtime. Here from the above code given n = 5 will print 3.14159
Willi Mentzel 解决方案针对 Java 17 进行了更新:
Willi Mentzel solution updated for Java 17: