C++实现正整数的高精度计算
高精度计算本质上就是模拟列竖式计算,这里只讨论正整数运算。
文章目录
1.高精度加法
在高精度四则运算中,高精度加法是最为简单的一种,所以将它放在第一个。高精度加法有两种实现方式。
一、用字符串模拟列竖式运算
string add(string a, string b)
{
if (a.size() < b.size()) return add(b, a);
string c; //结果字符串
reverse(a.begin(), a.end()), reverse(b.begin(), b.end());//将a、b反转
int t = 0;
for (int i = 0; i < a.size() || t; i++) //模拟列竖式计算
{
if (i < a.size())
{
t += a[i] - '0';
if (i < b.size()) t += b[i] - '0';
}
c += char(t % 10 + '0');
t /= 10;
}
reverse(c.begin(), c.end()); //结果字符串反转
return c;
}
注:使用reverse函数时要包含头文件algorithm