我们在用计算机处理的整数和实数的精度通常是有限的,如在双精度的计算机最多只能输出十六位的有效的十进制数,17位的有效数字正确性为0.9(double型)如果超出了这个范围,计算机就无法正确表示了。此时就需要借助编程来解决问题了。
这里先说数组来存储
int a[100] = {0};//开一个数组
int n;
string s;//以字符串的形式输入
cin>>s;
n = s.length();//字符串的长度
for(int i = 0; i < n; i++)
{
a[i] = s[n - i -1] - '0';//数组a从右向左按位存储高精度正整数
}
再来说一说基本的运算 加法
for(int i = 0; i < (n1 > n2 ? n1:n2); i++)//找出最大数组长度
{
a[i] = a[i] + b[i];//诸位相加注意此时数组中的数和原始数据是相反的
if(a[i] > 9)
{
a[i] -= 10;//进位处理
a[i + 1]++;
}
} //最终得到仍然是逆序列的输出时要注意逆序输出
再来说一说基本的运算 减法
//这个程序默认为 数 x , y 存放在数组a[],和数组b[]中
//且x > y若x < y只需要将a,b换一下即可
for(int i = 0; i < n;i++)
{
if(a[i] > b[i] )
a[i] = a[i] - b[i];
else
{
a[i] = a[i] + 10 - b[i];//借位
a[i + 1]--;//对应上面的借位
}
}