Code前端首页关于Code前端联系我们

高精度计算:C++ LongInt实现

terry 2年前 (2023-10-01) 阅读数 118 #c++
文章标签 MySQL数据库

一、为什么需要高精度计算

在进行数字计算的时候,常常会遇到数值过大(超过计算机所能表示的范围)的情况。例如,计算排列组合数、大数乘法、大数除法、高精度加减法、高精度幂等计算等。这时,就需要用到高精度计算。

高精度计算是通过将一个大数拆分成多个小数,然后利用计算机的机制来进行处理,进而达到表示大数的目的。一般情况下,我们可以利用数组存储一个数,每个元素存储这个数的一位,这样就可以表示任意长度的大数。

二、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前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门