判断数值有效位数的Java工具类详解编程语言

public class AdjustmentDouble{   
/**  
* @param s 需处理的数据  
* @param numOfIntPart 整数位数  
* @param numOfDecimalPart 小数位数  
* @return 处理过的数据  
*/   
public static String adjustDouble(String s,int numOfIntPart,int numOfDecimalPart){   
//按小数点的位置分割成整数部分和小数部分   
String[] array = s.split("//.");   
char[] tempA=new char[numOfIntPart];   
char[] tempB=new char[numOfDecimalPart];   
//整数部分满足精度要求(情况1)   
if(array[0].length()==numOfIntPart){   
//直接获取整数部分长度字符   
for(int i=0;i<array[0].length();i++){   
tempA[i]=array[0].charAt(i);       
}   
//小数部分精度大于或等于指定的精度   
if(numOfDecimalPart<=array[1].length()){   
for(int i=0;i<numOfDecimalPart;i++){   
tempB[i]=array[1].charAt(i);   
}   
}   
//小数部分精度小于指定的精度   
if(numOfDecimalPart>array[1].length()){   
for(int i=0;i<numOfDecimalPart;i++){   
if(i<array[1].length()){   
tempB[i]=array[1].charAt(i);   
}else{   
tempB[i]='0';   
}   
}   
}   
if(numOfDecimalPart==0){   
return String.valueOf(tempA)+String.valueOf(tempB);   
}   
return String.valueOf(tempA)+"."+String.valueOf(tempB);   
}   
//整数部分位数大于精度要求(情况2)   
if(array[0].length()>numOfIntPart){   
//先倒序获取指定位数的整数   
for(int i=array[0].length()-1,j=0;(i>=array[0].length()-numOfIntPart)&&(j<numOfIntPart);i--,j++){   
tempA[j]=array[0].charAt(i);   
System.out.println(tempA[j]);   
}   
char[] tempA1=new char[numOfIntPart];   
//调整顺序   
for(int j=0,k=tempA.length-1;j<numOfIntPart&&(k>=0);j++,k--){   
tempA1[j]=tempA[k];   
System.out.println("tempA1[j]"+tempA1[j]);   
}   
//小数部分精度大于或等于指定的精度   
if(numOfDecimalPart<=array[1].length()){   
for(int i=0;i<numOfDecimalPart;i++){   
tempB[i]=array[1].charAt(i);   
}   
}   
//小数部分精度小于指定的精度   
if(numOfDecimalPart>array[1].length()){   
for(int i=0;i<numOfDecimalPart;i++){   
if(i<array[1].length()){   
tempB[i]=array[1].charAt(i);   
}else{   
tempB[i]='0';   
}   
}   
}   
return String.valueOf(tempA1)+"."+String.valueOf(tempB);   
}   
//整数部分满足精度要求(情况3)   
if(array[0].length()==numOfIntPart){   
//直接获取整数部分长度字符   
for(int i=0;i<array[0].length();i++){   
tempA[i]=array[0].charAt(i);       
}   
//小数部分精度小于指定的精度   
if(numOfDecimalPart>array[1].length()){   
for(int i=0;i<numOfDecimalPart;i++){   
if(i<array[1].length()){   
tempB[i]=array[1].charAt(i);   
}else{   
tempB[i]='0';   
}   
}   
}   
//小数部分精度大于或等于指定的精度   
if(numOfDecimalPart<=array[1].length()){   
for(int i=0;i<numOfDecimalPart;i++){   
tempB[i]=array[1].charAt(i);   
}   
}   
if(numOfDecimalPart==0){   
return String.valueOf(tempA)+String.valueOf(tempB);   
}   
return String.valueOf(tempA)+"."+String.valueOf(tempB);   
}   
//整数部分大于精度要求(情况4)   
if(array[0].length()>numOfIntPart){   
//先倒序获取指定位数的整数   
for(int i=array[0].length()-1,j=0;(i>=array[0].length()-numOfIntPart+1)&&(j<numOfIntPart);i--,j++){   
//System.out.println("<<<<"+(i-array[0].length()+1));   
tempA[j]=array[0].charAt(i);   
}   
char[] tempA1=new char[numOfIntPart];   
//调整顺序   
for(int j=0,k=tempA.length-1;j<numOfIntPart&&(k>=0);j++){   
tempA1[j]=tempA[k];   
k--;   
}   
//小数部分精度小于指定的精度   
if(numOfDecimalPart>array[1].length()){   
for(int i=0;i<numOfDecimalPart;i++){   
if(i>=array[1].length()){   
tempB[i]='0';   
}else{   
tempB[i]=array[1].charAt(i);   
}   
}   
}   
//小数部分精度大于或等于指定的精度   
if(numOfDecimalPart<=array[1].length()){   
for(int i=0;i<numOfDecimalPart;i++){   
tempB[i]=array[1].charAt(i);   
}   
}   
if(numOfDecimalPart==0){   
return String.valueOf(tempA1)+String.valueOf(tempB);   
}   
return String.valueOf(tempA1)+"."+String.valueOf(tempB);   
}   
//整数部分小于精度要求(情况5)   
if(array[0].length()<numOfIntPart){   
//先倒序获取指定位数的整数   
char[] tempA1=new char[numOfIntPart];   
for(int i=array[0].length()-1,j=0;(i>=numOfIntPart-array[0].length()-(numOfIntPart-array[0].length()))&&(j<numOfIntPart);i--,j++){   
tempA1[j]=array[0].charAt(i);   
System.out.println("<<<<<<tempA1[j]"+tempA1[j]);   
}   
//补0   
for(int i=array[0].length();i<array[0].length()+numOfIntPart-array[0].length();i++){   
tempA1[i]='0';   
System.out.println("<<<<<<"+tempA1[i]);   
}   
char[] tempA2=new char[numOfIntPart];   
//调整顺序   
for(int j=0,k=tempA1.length-1;j<numOfIntPart&&(k>=0);j++){   
tempA2[j]=tempA1[k];   
k--;   
}   
//小数部分精度小于指定的精度   
if(numOfDecimalPart>array[1].length()){   
for(int i=0;i<numOfDecimalPart;i++){   
if(i<array[1].length()){   
tempB[i]=array[1].charAt(i);   
}else{   
tempB[i]='0';   
}   
}   
}   
//小数部分精度大于或等于指定的精度   
if(numOfDecimalPart<=array[1].length()){   
for(int i=0;i<numOfDecimalPart;i++){   
tempB[i]=array[1].charAt(i);   
}   
}   
if(numOfDecimalPart==0){   
return String.valueOf(tempA2)+String.valueOf(tempB);   
}   
return String.valueOf(tempA2)+"."+String.valueOf(tempB);   
}   
//情况(6)   
if((array[0].length()<numOfIntPart)&&(array[1].length()<numOfDecimalPart)){   
for(int i=0; i< numOfIntPart-array[0].length(); i++){   
s = "0"+s ;   
}   
for(int i = 0 ; i < numOfDecimalPart -array[1].length() ; i++){   
s = s+"0" ;   
}   
return s;   
}   
return null;   
}   
/**  
* @param args  
*/   
public static void main(String[] args) {   
// TODO Auto-generated method stub   
String s = "1234.123";   
s = AdjustmentDouble.adjustDouble(s, 5, 6);   
System.out.println(s);   
}   
}  

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/10919.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论