欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

判断数值有效位数的Java工具类,数值java工具类,public class

来源: javaer 分享于  点击 29584 次 点评:97

判断数值有效位数的Java工具类,数值java工具类,public class


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)&amp;&amp;(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&amp;&amp;(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)&amp;&amp;(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&amp;&amp;(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()))&amp;&amp;(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&amp;&amp;(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)&amp;&amp;(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);      }  }  
相关栏目:

用户点评