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

时间:2012-01-11 13:11:29

标签: java

  

可能重复:
  Round a double to 2 significant figures after decimal point

我在应用程序中处理了很多double值,是否有任何简单的方法来处理Java中十进制值的格式化?

还有其他更好的方法吗?

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

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

23.59004  to 23.59

35.7  to 35.70

3.0 to 3.00

9 to 9.00

2 个答案:

答案 0 :(得分:469)

不,没有更好的方法。

实际上你的模式有错误。你想要的是:

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

请注意"00",意思是完全两位小数。

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

答案 1 :(得分:342)

另一种方法是使用String.format

double[] arr = { 23.59004,
    35.7,
    3.0,
    9
};

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

输出:

23.59
35.70
3.00
9.00

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