基于vector类实现的高精度算法

       高精度算法,属于处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字。一般这类数字我们统称为高精度数,高精度算法是用计算机对于超大数据的一种模拟加,减,乘,除,乘方,阶乘,开方等运算。对于非常庞大的数字无法在计算机中正常存储,这里,使用C++STL中的vector类来实现高精度数。

         这里不妨将高精度数定义为very_long_int。这里需要一个容器来存储very_long_int类型数的每一位数,一般选择用数组来存储,但是向量的自动调整大小特性使得它比数组更加适合来充当这个容器。关于very_long_int类和vector类的关系,考虑到very_long_int类的主要目的是执行算法,因此它极少用到vector类的函数。或者说“very_long_int类有一个向量”而不是“very_long_int是一个向量”,及它们是(复合/聚合)的关系。一个高精度数的每一位数是一个digits,一个vector对象。同时,为了节约空间,这里选择只占据一个字节的char类型作为向量digits的对应类型,字段的定义是:

vector<string>digits;

这些位将按照正常的顺序自前向后地存储在向量digits中。例如,如果一个very_long_int的值是758,那么7将存储在下标0,5存储在下标1,8存储在下标2.

下面将给出very_long_int类的三个方法,3个重载运算符的实现&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值