(4)高精度算法
目录
1、高精度算法
高精度算法介绍
高精度算法(High Accuracy Algorithm)是处理大数字的一种数学计算方法,是用计算机对于超大数字的一种模拟加减乘除等的运算。但是计算机无法正常存储非常庞大的数字,便把数字进行拆分存储到一个数组找那个,用一个数组去表示一个数字,这样的数字便是高精度数。简言之,高精度算法就是能够处理高精度数之间各种运算的一种算法。
其实高精度数对于Pyhon来说不是问题,但是对于C++和Java等语言来说这么大的数字是无法以int类型存储的,所以必须要使用字符串来接收。
高精度与竖式计算
竖式计算是进行多位数的一种运算方法,我们自小学就开始接触,我们之所以要运用竖式来间接的求取答案是因为一般人的大脑只能计算一位数以内的加减乘除,而超过一位数的数人脑则需要借助纸笔。纸笔计算的方法很简单,就是一位一位地计算,用每一位数字依次去计算加减乘除,最后再移位相加减起来就得到结果了。 简言之就是把两个较大数字的加减乘除拆分成了在每一位上的数字相加减乘除。到这里剩下的就很简单了,也就是说我们可以把这两个很大的数字用两个数组来存储,数组当中的每一位存储数字上的一位。这种用数组来模拟数字进行加减乘除运算的方法就叫做高精度算法。
进位和前导零
进位应该很容易理解,在计算加乘法的时候我们需要判断当前位置的元素是否 >=10 ,如果大于10的话,我们则需要进行进位。我们只需要将它除以10,得到的结果就是我们需要进位的值。
前导零,根据一般常识,除了零本身以外的合法数字是不允许首位有0的,但是由于是减乘除法计算,所以不可避免的出现除个位以外其他位数出现0的情况,但是表示在数组当中则是多个0。这时我们就需要进行特殊处理,去除前导零。
2、高精度数的加减乘除
高精度加法
题目:
实现原理:
1、以读字符串的方式读取两个加数并转化存储到整型数组A和B中。 2、变量C存储运算结果 3、变量 t 来存储有可能的进位情况,初始化为0。 4、从最低位到最高位依次相加,将相加结果的个位保存在当前位,进位情况记录到 t(0无进位),以便在进行下一次运算的时候把进位加进去,t = A[i]+B[i]+t。
代码:
#include <iostream>