迭代器与部分类回顾

高精度

加法

​ 高精度的加法主要是逐位的加,在大于10时向前进位即可,需要注意的就是需要一开始进行位的补齐,以方便后续的运算。

​ 主要就是以下几个要点:

  • 对于进行运算的俩个字符串的位进行补齐,统一之后的位计算
  • 对于每个位进行简单加法运算的时候需要注意进位的时机
  • 对于运算后可能的额外位别给忘了

​ 在我的实现中,我将进行加法操作的俩个字符串进行了反转来方便后续的递推

​ 我的实现如下,简单看看即可,熟练后需要自己来搓了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
string precisionPlus(string str1,string str2)
{
string score;

int len1=str1.size(),len2=str2.size();
reverse(str1.begin(),str1.end());
reverse(str2.begin(),str2.end());
//将位给设置为一定能够储存最后结果的情况,统一接下来的操作
if(len1==len2)
{
str1.push_back('0');
str2.push_back('0');
}
else{
if(len1<len2)
{
for(int i=0;i<len2-len1;i++)
str1.push_back('0');
}
else{
for(int i=0;i<len1-len2;i++)
str2.push_back('0');
}
}
int max_l=max(str1.size(),str2.size());
int bit=0;
for(int i=0;i<max_l;i++)
{
int num1=str1[i]-'0';
int num2=str2[i]-'0';
int sumOfNum=num1+num2+bit;

score+=(to_string(sumOfNum%10));
bit=sumOfNum/10;
}
if(bit)score+=to_string(bit);

while(score.size()>1&&score.back()=='0')
{
score.pop_back();
}

reverse(score.begin(),score.end());
return score;
}
-------------本文结束 感谢阅读-------------