ToB企服应用市场:ToB评测及商务社交产业平台

标题: 高精度(加减乘除) [打印本页]

作者: 玛卡巴卡的卡巴卡玛    时间: 2023-11-13 12:57
标题: 高精度(加减乘除)
高精度(加减乘除)

高精度的核心思想就是利用数组去储存大数,然后通过模拟手动计算的方式,来进行计算。
主要分三个模块:
1.读入数据并转换为(int)类型储存
高精度加法

核心思想:将每个位上的数字都+起来,如果大于10就进位。
核心代码如下:
  1. c[i]+=a[i]+b[i];//两数相加
  2. c[i+1]+=c[i]/10;//进位
  3. c[i] = c[i]%10;//保留
复制代码
完整代码及解析如下:
[code]string x, y;//两个string类用来接收大数//a接收x中的每一位数字,b用来接收y中的每一位数组,计算之后,储存到c数组中int a[999], b[999], c[999];int main(){        cin >> x >> y;//读入        //将大数的每一位数转换为(int)类型,然后倒序储存        for (int i = 0; i < x.length(); i++)        {                a = x[x.length() - 1 - i]-'0';        }        for (int i = 0; i < y.length(); i++)        {                b = y[y.length() - 1 - i]-'0';        }        //核心:开始计算    //位数问题:两个数相加,和的位数等于max(x.length(), y.length(),或者是其+1;        for (int i = 0; i < max(x.length(), y.length()); i++)        {                c += a + b;//对应位数求和                c[i + 1] += c / 10;//进位                c = c % 10;//保留        }        //下面开始消除前导0        int k = 0;//利用k来修正位数        if (c[max(x.length(), y.length())] == 0)//如果最高位==0        {                k = 1;//k++输出位数-1        }    //注意看k是如何控制位数的        for (int i = max(x.length(), y.length())-k; i >=0 ; i--)        {                cout  x >> y;    //因为x-y有负数存在,所以我们只用大数减小数,最后补全-号就行    //下面进行比较:如果y比x大,就交换位置,并输出-号        if (cmp(x, y) == false)//详见上方的cmp函数        {                swap(x, y);                cout  0; i--)        {                if (c == 0)                {                        k++;                }                else                {                        break;                }        }        for (int i = max(x.length(), y.length())-k; i >= 0; i--)        {                cout  y;        for (int i = 0; i < x.length(); i++)        {                a[i+1] = x[x.length() - 1 - i]-'0';        }        for (int i = 0; i < y.length(); i++)        {                b[i+1] = y[y.length() - 1 - i]-'0';        }        //核心代码        for (int i = 1; i =1 ; i--)        {                cout  s >> b;    //注意除法时是正序输入        for (int i = 0;i




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4