关于java:将Double值格式化为2个小数位的最佳方法

Best way to Format a Double value to 2 Decimal places

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Round a double to 2 significant figures after decimal point

在我的应用程序中,我处理大量的双值,有什么简单的方法来处理Java中十进制值的格式吗?

还有比这更好的方法吗

1
 DecimalFormat df = new DecimalFormat("#.##");

我要做的基本上是格式化双值,比如

1
2
3
4
5
6
7
23.59004  to 23.59

35.7  to 35.70

3.0 to 3.00

9 to 9.00


不,没有更好的方法。

实际上,您的模式中有一个错误。你想要的是:

1
DecimalFormat df = new DecimalFormat("#.00");

注意"00",正好是两位小数。

如果您使用"#.##"(#表示"可选"数字),它将删除尾随零,即new DecimalFormat("#.##").format(3.0d);只打印"3",而不是"3.00"


另一种选择是使用String.format

1
2
3
4
5
6
7
8
9
double[] arr = { 23.59004,
    35.7,
    3.0,
    9
};

for ( double dub : arr ) {
  System.out.println( String.format("%.2f", dub ) );
}

输出:

1
2
3
4
23.59
35.70
3.00
9.00

您还可以使用System.out.format(相同的方法签名),或者创建一个以相同方式工作的java.util.Formatter