我在我的应用中涉及了很多双精度数值,请问有没有简单的方法来处理Java中的十进制格式化?
除此外,还有其他更好的方法吗?
DecimalFormat df = new DecimalFormat("#.##");
我想做的基本上是像这样格式化双精度值:
23.59004 to 23.59
35.7 to 35.70
3.0 to 3.00
9 to 9.00
我在我的应用中涉及了很多双精度数值,请问有没有简单的方法来处理Java中的十进制格式化?
除此外,还有其他更好的方法吗?
DecimalFormat df = new DecimalFormat("#.##");
我想做的基本上是像这样格式化双精度值:
23.59004 to 23.59
35.7 to 35.70
3.0 to 3.00
9 to 9.00
不,没有更好的方法。
实际上你的模式有误。你需要的是:
DecimalFormat df = new DecimalFormat("#.00");
注意 "00"
,意味着精确到小数点后两位。
如果您使用的是 "#.##"
(其中 #
表示“可选”数字),它将删除尾部零 - 例如 new DecimalFormat("#.##").format(3.0d);
只会打印出 "3"
,而不是 "3.00"
。
".99"
的#
代表可选的零。如果您想保留前导零(即输出为"0.99"
),请使用模式"#0.00"
。 - Bohemian另一种方法是使用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
。
Math.round()
方法。解决此问题的主题在这里:链接 - frank17