c++ 高精度加法
时间: 2024-09-17 07:04:11 浏览: 36
在C++中,实现高精度加法通常涉及到手动操作大整数,因为标准库提供的`int`、`long`等数据类型有一定的位宽限制,对于超大的数值可能会溢出。这通常通过数组或动态内存分配来进行。以下是一个简单的基于字符串的大整数加法示例:
```cpp
#include <string>
#include <vector>
std::string add(const std::string &num1, const std::string &num2) {
std::vector<int> carry(1, 0); // 初始化进位
int i = num1.size() - 1, j = num2.size() - 1;
std::string result;
while (i >= 0 || j >= 0) {
int n1 = i >= 0 ? num1[i] - '0' : 0; // 获取当前数字
int n2 = j >= 0 ? num2[j] - '0' : 0; // 获取另一个数字
// 累加并考虑进位
int sum = n1 + n2 + carry[0];
carry[0] = sum / 10; // 计算下一位的进位
result.push_back(sum % 10 + '0'); // 添加结果到字符串
i--;
j--;
}
if (carry[0]) { // 如果还有进位,则添加到结果前面
result.insert(result.begin(), carry[0] + '0');
}
return result;
}
阅读全文