public static String add(String num1, String num2){         String result = null;         if (num1.contains(".")){             int des1 = getPoint(num1);             String subNum1 = num1.substring(0,des1);             String leftNum1 = num1.substring(des1+1);             if (num2.contains(".")){                 int des2  =getPoint(num2);                 String subNum2 = num2.substring(0,des2);                 String leftNum2 = num2.substring(des2+1);                 int max = leftNum1.length() > leftNum2.length()?leftNum1.length() : leftNum2.length();                 if (subNum1.length() > subNum2.length())                      subNum2 = addZeroAtLeft(subNum2,subNum1.length()-subNum2.length());                 else                     subNum1 = addZeroAtLeft(subNum1, subNum2.length()-subNum1.length());                 if (leftNum1.length() > leftNum2.length())                     leftNum2 = addZeroAtRight(leftNum2,leftNum1.length()-leftNum2.length());                 else                     leftNum1 = addZeroAtRight(leftNum1,leftNum2.length()-leftNum1.length());                 String newNum1 = subNum1+leftNum1;                 String newNum2 = subNum2+leftNum2;                  result = getAddResult(newNum1,newNum2,newNum1.length());                  StringBuffer sb = new StringBuffer(result);                  int pos = result.length();                  for (int i=0;i<max;i++){                      pos --;                  }                  sb.insert(pos,'.');                  result = new String(sb);             }             else {                 if (subNum1.length() > num2.length())                     num2 = addZeroAtLeft(num2,subNum1.length()-num2.length());                 else                     subNum1 = addZeroAtLeft(subNum1,num2.length()-subNum1.length());                 result = getAddResult(subNum1,num2,subNum1.length()) + "." + leftNum1;             }         }         else {             if (num2.contains(".")){                 int des2  =getPoint(num2);                 String subNum2 = num2.substring(0,des2);                 String leftNum2 = num2.substring(des2+1);                 if (num1.length() > subNum2.length())                     subNum2 = addZeroAtLeft(subNum2,num1.length()-subNum2.length());                 else                     num1 = addZeroAtLeft(num1,subNum2.length()-num1.length());                 result = getAddResult(num1,subNum2,num1.length()) + "." + leftNum2;             }             else{                 if (num1.length() > num2.length())                     num2 = addZeroAtLeft(num2,num1.length()-num2.length());                 else                     num1 = addZeroAtLeft(num1,num2.length()-num1.length());                 result = getAddResult(num1,num2,num1.length());             }         }         return result;     }     public static String addZeroAtLeft(String str, int len){         StringBuffer stringBuffer = new StringBuffer(str);         for (int i=0;i<len;i++)             stringBuffer.insert(0,'0');         return new String(stringBuffer);     }     public static String addZeroAtRight(String str, int len){         StringBuffer stringBuffer = new StringBuffer(str);         for (int i=0;i<len;i++)             stringBuffer.append('0');         return new String(stringBuffer);     }     public static String getAddResult(String num1, String num2, int len){         char[] result = new char[len+1];         for (int i=0;i<=len;i++)             result[i] = '0';         for (int i=len-1;i>=0;i--){             int a = Integer.parseInt(num1.charAt(i) + "");             int b = Integer.parseInt(num2.charAt(i) + "");             int c = Character.digit(result[i+1],10);             int sum = a + b + c;             result[i+1] = (char) ('0' + sum % 10);             result[i] = (char) ('0' + sum / 10);         }         StringBuffer sb = new StringBuffer();         for (int i = 0;i<=len;i++){             if (result[i]=='0'&&i==0)                 continue;             sb.append(result[i]);         }         return new String(sb);     }     public static int getPoint(String str){         int len = str.length();         int i;         for (i=len-1;i>0;i--){             if (str.charAt(i) == '.')                 break;         }         return i;     }
点赞 评论

相关推荐

10-15 16:27
门头沟学院 C++
LeoMoon:建议问一下是不是你给他付钱😅😅
点赞 评论 收藏
分享
牛客网
牛客企业服务