读书人

double取一定精密度格式化输出的所有方

发布时间: 2012-09-01 09:33:02 作者: rapoo

double取一定精度格式化输出的所有方法
需要格式化输出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设置LocaleDecimalFormat 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什么的了...

读书人网 >编程

热点推荐