求助:c++高精度加法
2021-08-02
请问,是什么高精度?是位数太多,还是小数太多?
加法可以直接使用“+”运算符,但是有时候位数太多了,用long long类型都无法解决。这时候,就要使用高精度加法。可以使用数组存储。代码如下(我的Dev-C++是5.11,如果没有可以点击下载,此软件不支持与Dev-C++其他版本共同使用):
#include <iostream>
#include <cstring>
using namespace std;
int main(int argc, char** argv) {
char a[110] = {0},b[110] = {0};
cin>>a;
cin>>b;
int s1[110] = {0},s2[110] = {0},s3[110] = {0},i,j;
int len1 = strlen(a),len2 = strlen(b);
for(i = (len1 - 1),j = 0;i >= 0;i--,j++) {
s1[i] = (a[j] - '0');
}
for(i = (len2 - 1),j = 0;i >= 0;i--,j++) {
s2[i] = (b[j] - '0');
}
bool flag1 = 0,flag2 = 0;
if(len1 < len2) len1 = len2;
for(i = 0;i < len1 + 1;i++) {
s3[i] += (s1[i] + s2[i]);
if(s3[i] > 9) {
s3[i + 1]++;
s3[i] %= 10;
}
}
for(i = (len1 + 1);i >= 0;i--) if(s3[i] != 0) break;
if(i < 0) cout<<0;
else for(;i >= 0;i--) cout<<s3[i];
return 0;
}