使用String.format的Java十进制格式?

使用String.format的Java十进制格式?,java,formatting,decimal,Java,Formatting,Decimal,我需要将一个十进制值格式化为一个字符串,在这个字符串中,我总是显示至少2个小数,最多4个小数 比如说 "34.49596" would be "34.4959" "49.3" would be "49.30" 这可以使用String.format命令完成吗? 或者在Java中有更简单/更好的方法来实现这一点。您想要Java.text.DecimalFormatJava.text.NumberFormat可能就是您想要的。您想要Java.text.DecimalFormat DecimalFo

我需要将一个十进制值格式化为一个字符串,在这个字符串中,我总是显示至少2个小数,最多4个小数

比如说

"34.49596" would be "34.4959" 
"49.3" would be "49.30"
这可以使用String.format命令完成吗?

或者在Java中有更简单/更好的方法来实现这一点。

您想要Java.text.DecimalFormat

Java.text.NumberFormat可能就是您想要的。

您想要Java.text.DecimalFormat

DecimalFormat df = new DecimalFormat("0.00##");
String result = df.format(34.4959);

下面是一个执行此任务的小代码段:

double a = 34.51234;

NumberFormat df = DecimalFormat.getInstance();
df.setMinimumFractionDigits(2);
df.setMaximumFractionDigits(4);
df.setRoundingMode(RoundingMode.DOWN);

System.out.println(df.format(a));

NumberFormat和DecimalFormat绝对是您想要的。另外,请注意
NumberFormat.setRoundingMode()
方法。您可以使用它来控制格式化过程中如何应用舍入或截断。

是的,您可以使用
String。format

String result = String.format("%.2f", 10.0 / 3.0);
// result:  "3.33"

result = String.format("%.3f", 2.5);
// result:  "2.500"

按照同样的例子,你会得到错误的结果。对于此特定示例,需要使用RoundingMode.DOWN。否则,它将使用半偶数。不,虽然是否定的。没有否定的,但是你的代码在最初的海报中给出的第一个例子中失败了。需要使用RoundingMode.DOWN,否则即使在默认情况下,它也会使用HALF_。这可能不是问题的正确答案,但这是我来这里找到的答案。谢谢