栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

高精度计算

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

高精度计算

3.高精度加法
一般用数组存储一个数
eg:123456789
问题:第0位存1呢,还是存9呢?
回答:第0位存各位比较好。即第0位存9   #便于进位时往数组里添加值
所以数组存储顺序为 9 8 7 6 5 4 3 2 1 


大整数用数组存储
运算:模拟人工计算
 高精度加法模板:

#include
#include
using namespace std;

//C=A+B
vectoradd (vector& a, vector& b)  
//加引用是为了提高效率,如果不加引用的话系统会把这个数组在复制一遍
{
    vectorc;
    int t = 0;
    for (int i = 0; i < a.size() || i < b.size(); i++)
    {
        if (i < a.size()) t += a[i];
        if (i < b.size())  t += b[i];
        c.push_back(t % 10);
        t = t / 10;

    }
    if (t)  //如果还有进位
        c.push_back(1);
    return c;
}

int main()
{
    string a, b;
    cin>>a >> b;
    vectornuma, numb;
    //从后往前遍历每一位
    for (int i = a.size()-1; i >= 0; i--)
    {
        numa.push_back(a[i] - '0');//  -'0'的作用是使char变为数字
    }
    for (int i = b.size()-1; i >= 0; i--)
    {
        numb.push_back(b[i] - '0');//  -'0'的作用是使char变为数字
    }
    auto c = add(numa, numb);
    //倒着输出
    for (int i = c.size()-1; i >= 0; i--)
    {
        cout << c[i];
    }
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/703367.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号