可能重复:
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
答案 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
。