高精度计算: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++代码的秘密
code前端网



