实数运算不外乎加减乘除,所谓高精度就是数据范围大到标准类型受不了233,这时候就用数组模拟小学生竖式运算就好啦!
更详细的讲解与代码实现可以看:
列出几个注意点:点击打开链接
(都要倒着做,不能搞错。)
1.高精度加法中进位的实现
while (lenc <=lena||lenc <=lenb)
{
c[lenc]=a[lenc]+b[lenc]+x; //两数相加
x=c[lenc]/10; //进位
c[lenc]%=10;
lenc++;
}
2.减法中借位的实现
if(s[k] < 0)
{
a1[i-1] -= 1;//借位
s[k]+=10;
}
3.注意乘法中不能采用加法的那个进位,不解释,易懂。进位的第二种实现:
for(i = 0;i < dig; i++)
while(s[i] >= 10)
{
s[i] -= 10;
++s[i+1];
}