最近在项目中遇到一个小问题,对小数保留一位有效数字;在这里跟大家分享一下解决方法,如果大家有更好的解决方法欢迎评论指点
//小数部分取到第一个非0位,并向正上取值 public double getCeilDouble(double number) { String str = new DecimalFormat("0.0000000000").format(number); //将number格式化为小数点后面有10位数的小数 String[] fore = str.split("[1-9]", 2);//截取小数前面为0的部分《如:0.0002,取0.000) String[] split = str.split(".", 2); //截取小数点后面的部分(包含了小数点) int aft = Integer.parseInt(split[1].substring(1)); //去除小数点然后转成整数 int len = (aft+"").length();//获取有几位数 aft=(int) Math.ceil(aft/Math.pow(10, len-1)); //最后保留1位(向正取值) return Double.parseDouble(fore[0]+aft); }
因为需求有效数字我使用的是向上取整,如果需要向下取整或者四舍五入可以将Math.ceil替换成Math.floor或者Math.round