2010-02-06 49 views
9

我以前以下十进制格式:使用了下面的情况

private static final DecimalFormat decimalFormat = new DecimalFormat("0.00"); 

所以,

它可以改变:

0.1 -> "0.10" 
0.01 -> "0.01" 
0.001 -> "0.00" 

我想什么是

0.1 -> "0.10" 
0.01 -> "0.01" 
0.001 -> "0.001" 

是否可以实现如此使用DecimalFormat的?

回答

20

的DecimalFormat类是不是 “线程安全”。所以你最好用这种格式的静态字符串变量,而你应该在需要的方法中定义DecimalFormat对象。

静态变量:

private static final String decimalFormatStr = "0.00#"; 

方法中的局部变量:

DecimalFormat decimalFormat = new DecimalFormat(decimalFormatStr); 
+3

提及线程安全性+1。 – Kevin 2010-02-06 14:39:55

+0

谢谢凯文。许多人在使用DecimalFormat时忘记了这一点。 – 2010-02-06 14:56:13

+0

感谢提到线程安全。我很快审查了我的所有代码并修复了它们:) – 2010-02-06 17:48:37

13

是,使用此:

new DecimalFormat("0.00######"); 

#意味着一个数字应该只是显示尾部的零那里。 0表示始终显示一个数字,即使它是一个尾随零。格式化字符串中的小数位数不会超过点后面的0 s和# s的总数,因此在本例中,小数点后8位的数字将被截断。

+0

欢呼声想保留尾随零 – 2017-02-07 13:05:29

6

你可以这样说:

NumberFormat f = NumberFormat.getNumberInstance(); 
f.setMinimumFractionDigits(2); 

System.out.println(f.format(0.1)); 
System.out.println(f.format(0.01)); 
System.out.println(f.format(0.001)); 
+0

是'NumberFormat'是线程安全的? – WitVault 2016-06-10 11:00:14