2014年10月17日09:48:39
在做项目中遇到的,要把想显示的数据进行规定小数位的保留,下面写一下用过的方法:
1. BigDecimal 方法(我做项目的时候用的方法)
代码:
java.math.BigDecimal
BigDecimal bd = new BigDecimal("3.14159265");
bd = bd.setScale(3,BigDecimal.ROUND_HALF_UP);
BigDecimal aa = new BigDecimal("3.1");
aa = aa.setScale(3,BigDecimal.ROUND_HALF_UP);
这里面的bd是自定义的变量,即最后取得小数点后若干位的数,3表示小数点后两位
输入结果:
bd=3.142
aa=3.100
2.DecimalFormat 方法
DecimalFormat df1 = new DecimalFormat(“0.0″); //保留1位小数,带前导零
DecimalFormat df2 = new DecimalFormat(“#.#”); //保留1位小数,可以不带前导零
DecimalFormat df3 = new DecimalFormat(“000.00″); //保留2位小数,带前导零
DecimalFormat df4 = new DecimalFormat(“###.##”); //保留2位小数,可以不带前导零
模式中#为可选,存在则出现,不存在则不出现;
模式中0为必须,存在则为具体数字,不存在则为零;
例如:
DecimalFormat df1 = new DecimalFormat("0.0"); //保留1位小数,带前导零
DecimalFormat df2 = new DecimalFormat("#.#"); //保留1位小数,可以不带前导零
DecimalFormat df3 = new DecimalFormat("000.000"); //保留2位小数,带前导零
DecimalFormat df4 = new DecimalFormat("###.###"); //保留2位小数,可以不带前导零
System.out.println(df1.format(31.1556));
System.out.println(df2.format(31.1556));
System.out.println(df3.format(31.1556));
System.out.println(df4.format(31.1556));
System.out.println(df3.format(31.15));
System.out.println(df4.format(31.15));
输出结果:
31.2
31.2
1531.156
1531.156
1531.150
1531.15
结论:
1.df.format(double)的最终输出类型是String类型,但是参数必须为double类型
2.模式中#为可选,存在则出现,不存在则不出现;
模式中0为必须,存在则为具体数字,不存在则为零;
3.整数位假如超过了本身定义的位数,那么就将整数位全部位数都显示出来。