最近在項目中遇到一個小問題,對小數保留一位有效數字;在這里跟大家分享一下解決方法,如果大家有更好的解決方法歡迎評論指點
//小數部分取到第一個非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