c++高精度

本文介绍了使用C++实现高精度加法、减法、乘法和除法的方法。通过动态数组vector存储多位数,利用ASCII码转换进行数值计算。同时提供了详细的代码实现,包括加法、减法、乘法和除法的函数实现。
摘要由CSDN通过智能技术生成

一、高精度


  当然在java中,进行高精度的加法、减法、乘法、除法运算的时候,可以通过java.math包中提供的BigInteger类提供的的方法来进行计算:

加法:a.add(b);表示a+b
减法:a.subtract(b);表示a-b
乘法:a.multiply(b);表示a*b
除法:a.divide(b);表示a/b并取整
取余:a.remainder(b);表示a%b
除法取余:BigInteger c[]=a.divideAndRemainder(b); a除b的商给 c[0],余数给c[1]
最大公约数:a.gcd(b); a与b的最大公约数
绝对值:a.abs(); 对a取绝对值
取相反数:a.negate(); 对a取相反数
取幂值:a.pow(n); 求a的n次方
二、高精度加法:
  给定两个正整数,计算它们的和。

   vector是stl里的动态数组,动态数组是模板库中的一个类,当元素的个数大于等于数组的大小的时候,数组的大小会变成原来的两倍,系统会从另一片区域中找出一块原来的数组的内存的两倍的空间,之后再把原来的数组拷贝到新的数组中。

   为什么用a[i]-‘0’?因为ASCII中的0-9对应48-57,但我们计算的时候想要数字,而不是它的ASCII码。所以必须让0变为0,1变为1以此类推…


                          ’0‘ - ’0‘ = 0 –> 48 - 48 = 0
                          ‘1’ - ‘0’ = 1 –> 49 - 4

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值