关注
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;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
- 1... 后端实习什么算有产出2.6W
- 2... 25届游戏客户端开发求职总结9653
- 3... 广州25应届计算机 Java想转行9577
- 4... 双一流本的春招结束 去送外卖了8388
- 5... 太顺利的话,好像总是有意外……7030
- 6... 差不多还有一周就要去团子实习了,部门自我感觉不是很核心,但是现在比较焦虑。清楚自己是一个八股选手,项目经验几乎是0,比较依赖ai,外卖点评什么的都没敲过,自己的学习能力应该算中等?很害怕进去之后比较push,然后发现我是个水货把我提前开除了,想问问这段时间可以做些什么准备呢?速通一下外卖项目跟着看一遍视频?(有点担心跟着敲一遍时间不够)?5311
- 7... 腾讯云智一面面经5052
- 8... 回望春招路~草草用如履薄冰带过4904
- 9... 实习生都给我放开了大胆问4869
- 10... 955和996的真正区别4158
正在热议
更多
# 我的求职总结 #
8812次浏览 167人参与
# 辞职之后最想做的一件事 #
7749次浏览 83人参与
# 毕业季,给职场新人一些建议 #
7539次浏览 147人参与
# 选offer应该考虑哪些因素 #
8127次浏览 118人参与
# 我的实习日记 #
2412544次浏览 25242人参与
# 工作后会跟朋友渐行渐远吗 #
20246次浏览 154人参与
# 你小时候最想从事什么职业 #
89757次浏览 1680人参与
# 你想留在一线还是回老家? #
35714次浏览 433人参与
# 设计人如何选offer #
107938次浏览 706人参与
# 生物制药/化工校招攻略 #
42580次浏览 282人参与
# 比亚迪求职进展汇总 #
702967次浏览 3058人参与
# 毕业后不工作的日子里我在做什么 #
167360次浏览 1479人参与
# 你们公司哪个部门最累? #
13975次浏览 118人参与
# 薪资爆料 #
101626次浏览 1036人参与
# 秋招想进国企该如何准备 #
56575次浏览 363人参与
# 招聘要求与实际实习内容不符怎么办 #
98098次浏览 717人参与
# 大学最后一个寒假,我想…… #
35307次浏览 452人参与
# 工作中的卑微时刻 #
8735次浏览 54人参与
# 市场营销面经 #
40850次浏览 298人参与
# 25届网易互娱暑实进度 #
72050次浏览 672人参与