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


73

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

所以举个例子

"34.49596" would be "34.4959" 
"49.3" would be "49.30"

可以使用String.format命令完成此操作吗?
还是在Java中有更简单/更好的方法来做到这一点。

Answers:


86

您需要java.text.DecimalFormat。

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

3
按照相同的示例,您将得到错误的结果。对于此特定示例,您需要使用RoundingMode.DOWN。否则,它将使用HALF_EVEN。不,虽然负面。
Adeel Ansari 2009年

161

是的,您可以使用String.format

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

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

22
这可能不是对所提问题的正确答案,但这是我在这里找到的答案。谢谢!
milosmns

41

这是完成此工作的一个小代码段:

double a = 34.51234;

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

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

没有负面影响,但是您的代码在原始海报给出的第一个示例中失败了。我想,需要使用RoundingMode.DOWN,否则默认情况下它使用HALF_EVEN。
Adeel Ansari

3

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


2

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.