关注
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;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
07-08 14:54
西南石油大学 电力电子工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习生的蛐蛐区 #
56453次浏览 419人参与
# 运营面经 #
115830次浏览 1251人参与
# 你认为小厂实习有用吗? #
21552次浏览 254人参与
# 说说你知道的学历厂 #
40500次浏览 245人参与
# 应届生,你找到工作了吗 #
21743次浏览 154人参与
# 你的领导最像哪种动物,为什么? #
14570次浏览 107人参与
# 三一重工求职进展汇总 #
13501次浏览 62人参与
# 材料人,你们签了哪个公司 #
7551次浏览 18人参与
# 哪一瞬间觉得自己长大了 #
10451次浏览 233人参与
# 计算机有哪些岗位值得去? #
17395次浏览 161人参与
# 面试尴尬现场 #
33365次浏览 224人参与
# 你找工作的时候用AI吗? #
19367次浏览 236人参与
# 下班后的时间你怎么安排 #
10614次浏览 142人参与
# 烟草笔面经互助 #
17885次浏览 184人参与
# 硬件人秋招的第一个offer #
80241次浏览 1154人参与
# 社会教会你的第一课 #
37640次浏览 470人参与
# 秋招最大的收获是什么? #
36153次浏览 309人参与
# 电网笔面经互助 #
36958次浏览 359人参与
# 中核求职进展汇总 #
20801次浏览 153人参与
# lastday知无不言 #
58457次浏览 475人参与