一尘不染

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

java

我正在处理应用程序中的许多双精度值,是否有任何简单的方法来处理Java中十进制值的格式?

还有其他比这更好的方法了吗

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

我基本上想做的是格式化double值,例如

23.59004  to 23.59

35.7  to 35.70

3.0 to 3.00

9 to 9.00

阅读 972

收藏
2020-02-27

共2个答案

一尘不染

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

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

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

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

2020-02-27
一尘不染

一种替代方法是使用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相同方式工作的。

2020-02-27