关注
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;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 互联网行业现在还值得去吗 #
36312次浏览 257人参与
# 落户对你的求职选择影响有多大 #
28988次浏览 101人参与
# 虾皮开奖 #
42208次浏览 202人参与
# 你小时候最想从事什么职业 #
132139次浏览 1971人参与
# 第一次找实习,我建议__ #
27419次浏览 347人参与
# 非技术2024笔面经 #
435004次浏览 4881人参与
# 参加完秋招的机械人,还参加春招吗? #
80182次浏览 614人参与
# 机械人的工作环境真的很差吗 #
35523次浏览 132人参与
# 牛友的志愿填报指南 #
41375次浏览 196人参与
# 韶音科技求职进展汇总 #
62017次浏览 506人参与
# 从mentor身上学到了__ #
23170次浏览 385人参与
# 你怎么评价今年的春招? #
143917次浏览 1392人参与
# 外出实习被同学举报 #
5870次浏览 39人参与
# 除了主业以外,你还有哪些其他收入? #
36237次浏览 303人参与
# 打工人的至爽时刻or至暗时刻 #
42744次浏览 223人参与
# 材料进Fab厂真的劝退吗? #
60591次浏览 209人参与
# 你认为工作的意义是什么 #
205957次浏览 1308人参与
# 华为海思工作体验 #
35967次浏览 146人参与
# 秋招暂停,我将对以下公司做出处罚__ #
31800次浏览 146人参与
# 如果今天是你的last day,你会怎么度过? #
49624次浏览 304人参与
