java - 如何以可变精度进行 Java String.format?

标签 java string rounding precision floating-accuracy

我想根据用户输入改变我正在格式化的字符串中 double 表示的精度。现在我正在尝试类似的东西:

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);

但我仍然对此类操作的原生支持感兴趣。

最佳答案

您回答了自己的问题 - 动态构建格式字符串...有效的格式字符串遵循此处概述的约定:http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax .

如果您想要一个总共占用 8 个字符(包括小数点)的格式化小数,并且您希望小数点后有 4 个数字,那么您的格式字符串应该类似于“%8.4f”...

据我所知,除了格式字符串灵活之外,Java 中没有“原生支持”。

关于java - 如何以可变精度进行 Java String.format?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2301047/

相关文章:

java - 下一轮浮点舍入

c# - MS Excel 货币四舍五入法

java - 检查 PsiElement 是否为字符串

java - 将字符串从一个子类传递到另一个子类

string - 在 Go 中逐行读取文件

python - 为什么我要在 Python 中使用 int( input().strip() ) 而不是 int( input() )?

floating-point - 浮点舍入检测

java - 使用 RESTEasy/jax-rs 的字符编码响应

java - 在线程 "main"java.lang.NullPointerException 中获取异常

java - 如何在java中将camelCase字符串转换为下划线,保留一些大写,其余的小写?