如何保留小数点后N位?
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.整数位假如超过了本身定义的位数,那么就将整数位全部位数都显示出来。
我是刚刚进入公司的Android实习生,菜鸟一枚,博客记录我犯过的错,收获的东西,学到的知识和技术,可能里面会有很多错误的地方,幼稚的地方,欢迎大家指出来,帮助我进步,但请别伤害我,我只是菜鸟一枚,我在努力争取进步。