C++ ! 大数 加法 减法 乘法计算 !
总结一下最近做的大数相关的运算。
int 的取值范围是 -2147183648 ~ +2147183648(即-231~ +(231-1)),大致范围为-2×109 ~ 2×109 ,而 long long的取值范围是 -263~ +(263-1)),大致范围为-9×1018 ~ 9×1018。
对于超出这个范围的数就不能用int 或者 long long 保存,常用的方法有用字符串或者数组进行存储。 相应的我们无法直接使用 ‘+’,‘-’,‘×’ 这些运算符直接进行运算,就需要自己写相应计算的函数。
大数加法 A+B Plus!
#include<string>
#include<iostream>
using namespace std;
string ToString(int n)
{
char ch = '0';
ch += n;
string str;
str += ch;
return str;
}
string CountAdd(string nStr, string mStr)
{
string sumResult;
bool isOverTen = false;
while (!nStr.empty() || !mStr.empty() || isOverTen)
{
int n = 0;
int m = 0;
if (!nStr.empty()){
n = nStr.back() - '0';
nStr.erase(nStr.end() - 1);
}
if (!mStr.empty()){
m = mStr.back() - '0';
mStr.erase(mStr.end() - 1);
}
int sum = n + m;
if (isOverTen) {
sum++;
}
if (sum / 10 > 0){
isOverTen = true;
} else {
isOverTen = false;
}
sumResult.insert(0, ToString(sum % 10));
}
return sumResult;
}