高精度计算:C++ LongInt实现
一、为什么需要高精度计算
在进行数字计算的时候,常常会遇到数值过大(超过计算机所能表示的范围)的情况。例如,计算排列组合数、大数乘法、大数除法、高精度加减法、高精度幂等计算等。这时,就需要用到高精度计算。
高精度计算是通过将一个大数拆分成多个小数,然后利用计算机的机制来进行处理,进而达到表示大数的目的。一般情况下,我们可以利用数组存储一个数,每个元素存储这个数的一位,这样就可以表示任意长度的大数。
二、C++ LongInt实现
C++语言本身就支持很好的高精度计算,用STL即可。例如vector、string等类,都可以进行高精度运算。另外,我们还可以自己实现一些高精度的类,例如LongInt。
下面给出一个简单的LongInt类实现,包括加、减、乘、除、取模、赋值、大小比较等基本操作。
#include<vector> #include<iostream> using namespace std; class LongInt{ public: vector<int>num; bool flag; LongInt(){flag=false;} LongInt(string s){init(s);} LongInt(const LongInt&a){num=a.num;flag=a.flag;} void init(string&s){ int len=s.length()-1; while(len>=0){num.push_back(s[len]-'0');len--;} flag=s[0]=='-'; if(flag)num.pop_back(); } LongInt&operator+(LongInt&rhs){ int carry=0; int len=max(num.size(),rhs.num.size()); for(int i=0;i
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
上一篇:面向对象编程:C++中的类和对象 下一篇:编写高质量C++代码的秘密
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。