需要格式化输出double数值,精度为小数点后两位。似乎有很多种方法,但是我只想到了String.format(),惭愧,回家把其他方法的整理了一下。
	double dd = 32.2553;
	//最简洁,利用类型转型转换
	System.out.println(Math.round(dd * 100)/100.0);
	//--output 32.26
	
	//不太好看的,利用大数类的方法
	BigDecimal bd = new BigDecimal(dd);
	System.out.println(bd.setScale(2, RoundingMode.HALF_UP));
	//--output 32.26
	
	//通用的格式化方法,万能类型转换和格式化
	System.out.println(String.format("%1$.2f",dd));
	//--output 32.26
	
	//最专业格式化,还可以利用父类NumberFormat设置Locale
	DecimalFormat df1 = new DecimalFormat("#0.00");
	System.out.println(df1.format(dd));
	//--output 32.26
	
	//针对百分比,但是我需要按百分百里的数字排序而不是字典序
	DecimalFormat df2 = (DecimalFormat)DecimalFormat.getPercentInstance();
	df2.setMaximumFractionDigits(2);
	System.out.println(df2.format(0.45332));
	//--output 45.33%
我常常想JDK
版本更新挺快,新类库总是更加漂亮和强大,是不是以后可以渐渐忘掉一些不好用的老类库呢~比如记住java.util.Formatter的各种格式化符就可以代替各种老的DateFormat还有NumberFormat什么的了...