高精度算法在各种编程题目以及实际应用中很常见,这里给出最常见的思路和一组函数实现。
结构体hp描述这个数字,成员len表示数字长度,s[]记录每一位上的数字,其实只记10个数,用int有点浪费,某些特定场合可以用char定义s[],只是相应的程序部分也必须做一些更改。
然后用最原始的办法一位一位计算得出结果。
当然这组函数只是示范思路,还不能进行复杂的数学运算,但这个基础上写出更复杂运算的函数相信并不困难^_^
高精度常用函数实现(C++) |
#define maxsize 100 struct hp { int len; int s[maxsize+1]; }; void input(hp &a,string str) { int i; while(str[0]=='0' && str.size()!=1) str.erase(0,1); a.len=(int)str.size(); for(i=1;i<=a.len;++i) a.s[i]=str[a.len-i]-48; for (i=a.len+1;i<=maxsize;++i) a.s[i]=0; } void print(const hp &y) { int i; for(i=y.len;i>=1;i--) cout<<y.s[i]; cout<<endl; } |