|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在一个普通的程序中
类似于:
int main()
{
int a ,b ;
scanf("%d%d",&a,&b);
printf("%d",a+b);
return 0 ;
}
会因为int型数据类型范围的约束,在值过大时会产生溢出
这个问题或许对于普通应用的程序没有多大影响,但是对于进行大规模计算,精度计算之类的程序(计算器也是...)有着非常大的意义
这里我会讲解如何解决这类问题(分别涉及大数的加减乘除)
这里有一个写好的程序,他可以计算10000位(电脑配置再高一点可以位数更大)
这里先对加法略作讲解
需要了解的几点知识 :
1 . 通过数组来对每一位进行处理
2 . 这个数组需要倒过来 ,从后向前处理
例如 1234 + 3944
那就是 4321 + 4493
分解为 4+4 = 8
3+4 = 7
2+9 = 11
1+3 = 4
然后再对大于10的位数做处理 分别是 此位减10 ,下一位加1
2+9 = 11 ------> 11 -10 = 1
1+3 = 4 ------> 4+ 1 = 5
然后再判断最后一位是否大于10 ,如果是,长度加1
然后再把数组倒过来输出就可以了
关键是这里面每一步的实现 ,
还有就是 留下一个问题 如果是 1234 + 321 这种不同位数的相加 ,怎么在数组按为相加进位时保持同步?
答案留在源代码里面了
|
|