先扩大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;
}



