先扩大n+1倍
在取个位数 判断是否大于等于五
若大于等于5 则加10
在除以n+1倍
然后判断小数位数是否合法
public static String decimalRound(String value, int length) { if (length > 10) { length = 10; } double dataDouble = 0; //先扩大10^length+1次方 long dataInteger = (long) (Double.parseDouble(value) * Math.pow(10, length + 1)); //取出最后一位标志位 判断是否大于等于5 int flag = (int) dataInteger % 10; dataInteger = dataInteger / 10; if (flag >= 5) { dataInteger += 1; }else if(flag<=-5) { dataInteger -= 1; } //恢复小数 dataDouble = dataInteger / Math.pow(10, length); //检查小数位数 String dataString = String.valueOf(dataDouble); String integerPart = dataString.split("\.")[0]; String decimalPart = dataString.split("\.")[1]; int decimalLength = decimalPart.length(); if (decimalLength >= length) { decimalPart=decimalPart.substring(0, length); } else { for (int i = 0; i < length - decimalLength; i++) { decimalPart += "0"; } } return integerPart + "." + decimalPart; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)