{
public static String round(double value,int dotNum)
{
String strValue=String.valueOf(value);
//转换为字符串int pos =strValue.indexOf(".");
//小数点的位置
int len=strValue.length();
//数值总位数
int dotLen=len-1-pos;
//小数的位数
double endValue=0.0;
//保存运输结果的中间变量
String endNum="";
//保留最终结果的变量
if (dotNum<dotLen)
//需要保留的小数位数小于实际的小数位数。
{ String cNum=strValue.substring(pos+dotNum+1,pos+dotNum+2);
//获得需要进位的小数位
int iNum=Integer.valueOf(cNum);//转为整数
String sNum=strValue.substring(0,pos+dotNum+1);
//获得需要保留未进行舍入处理的数值
endValue=Double.valueOf(sNum);
//转为double型
if(iNum>=5){
//如果需要舍入的值大于等于5
String endPos="";
//存放需要进位的小数值
String dotValue="";
//链接小数点后的多个零
for (int i=1;i<dotNum;i++ )
{ dotValue=dotValue+"0";
//将小数点后的多个零连接在一起
}
endPos="0."+dotValue+"1";
//需要进位的小数值
endValue=endValue+Double.valueOf(endPos);
//四舍五入处理过后的值
strValue=String.valueOf(endValue);
//处理后的值转换为字符串
pos=strValue.indexOf(".");//小数点的位置
len=strValue.length();//数值的总位数
dotLen=len-1-pos;//小数的位数
if(dotLen<dotNum){//如果小数位数不足补足为数
for(int i=pos+dotLen+1;i<pos+dotNum+1;i++)
{
endNum=String.valueOf(endValue)+"0";}
}else{ //小数位数正好,或超过要求,则进行截位处理
endNum=String .valueOf(endValue).substring(0,pos+dotNum+1);
}
}
else{
endNum=strValue.substring(0,strValue.indexOf("."))+strValue.substring(strValue.indexOf("."),strValue.indexOf(".")+dotNum+1);
}
}else if(dotNum==dotLen){ //小数位数与要求相同,直接转换为字符串
endNum=String.valueOf(value);}
else{
for (int i=1;i<=dotNum-dotLen ;i++ )//小数位数不够,请补位
{strValue=strValue+"0";
}
endNum=strValue;//最终的值
}return endNum;
}
public static void main(String[] args)
{
RoundTool r=new RoundTool();
System.out.println(r.round(123.121,5));
}
}