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

Raj*_*ula 292 java

可能重复:
将小数点后的双精度数加到2位有效数字

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

还有其他更好的办法吗?

 DecimalFormat df = new DecimalFormat("#.##");
Run Code Online (Sandbox Code Playgroud)

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

23.59004  to 23.59

35.7  to 35.70

3.0 to 3.00

9 to 9.00
Run Code Online (Sandbox Code Playgroud)

Boh*_*ian 486

不,没有更好的方法.

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

DecimalFormat df = new DecimalFormat("#.00"); 
Run Code Online (Sandbox Code Playgroud)

注意"00",这意味着正好两位小数.

如果你使用"#.##"(#意思是"可选"数字),它将丢弃尾随零 - 即new DecimalFormat("#.##").format(3.0d);打印只是"3",而不是"3.00".

  • @MubasharAhmad`".99"` - ```表示"可选的零".如果你想保留前导零(即输出""0.99"`),使用模式"#0.00"` (36认同)
  • 你可以使用String num = String.format("%.2f",23.59004); 然后打印num.它将打印23.59. (11认同)
  • 请注意DecimalFormat将根据当前计算机的语言环境更改分隔符.因此,如果您必须发送要在其他地方解析的值(例如:数据库),则可以将值打印到屏幕但不可靠.这同样适用于String.format(). (6认同)

Ope*_*uce 351

另一种方法是使用String.format:

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

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

输出:

23.59
35.70
3.00
9.00
Run Code Online (Sandbox Code Playgroud)

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