package com.newcore.pcms.util;
public class ReservedDecimal {
public static String reservedDecimal(int len ,String str) {
if(len>20){
throw new NumberFormatException("保留小数不能保留超过20位!");
}
if(len<0){
throw new NumberFormatException("保留小数不能为负数!");
}
if(str==null||"".equals(str)){
throw new NumberFormatException("数字不能为空");
}
Double.valueOf(str);
if(str.length()-str.indexOf(".")-len==1){
return str;
}
if(len==0){
if(str.indexOf(".")==-1){
return str;
}else{
String sustr = str.substring(str.indexOf(".")+1, str.indexOf(".")+2);
int suint = Integer.valueOf(sustr);
if(suint>4){
String susta = str.substring(str.indexOf("."), str.indexOf(".")+1);
int suin = Integer.valueOf(susta)+1;
StringBuffer buf = new StringBuffer(str);
str=buf.replace(str.indexOf("."), str.indexOf(".")+1, String.valueOf(suin)).toString();
return str.substring(0, str.indexOf("."));
}else{
return str.substring(0, str.indexOf("."));
}
}
}
if(str.indexOf(".")==-1){
str=str+".";
}
int position = str.length() - (str.indexOf(".") + 1);
if(position<len){
int a = len-position;
String stra = "";
for (int j = 0; j < a; j++) {
stra = stra+"0";
}
str = str+stra;
}else{
String sustr = str.substring(str.indexOf(".")+len+1, str.indexOf(".")+len+2);
int suint = Integer.valueOf(sustr);
if(suint>4){
String susta = str.substring(str.indexOf(".")+len, str.indexOf(".")+len+1);
int suin = Integer.valueOf(susta)+1;
StringBuffer buf = new StringBuffer(str);
str=buf.replace(str.indexOf(".")+len+0, str.indexOf(".")+len+1, String.valueOf(suin)).toString();
}
}
return str.substring(0, str.indexOf(".")+len+1);
}
}