求助:c++高精度加法

 我来答
匿名用户
2021-08-02
展开全部

请问,是什么高精度?是位数太多,还是小数太多?

加法可以直接使用“+”运算符,但是有时候位数太多了,用long long类型都无法解决。这时候,就要使用高精度加法。可以使用数组存储。代码如下(我的Dev-C++是5.11,如果没有可以点击下载,此软件不支持与Dev-C++其他版本共同使用):

#include <iostream>

#include <cstring>

using namespace std;

int main(int argc, char** argv) {

    char a[110] = {0},b[110] = {0};

    cin>>a;

    cin>>b;

    int s1[110] = {0},s2[110] = {0},s3[110] = {0},i,j;

    int len1 = strlen(a),len2 = strlen(b);

    for(i = (len1 - 1),j = 0;i >= 0;i--,j++) {

        s1[i] = (a[j] - '0');

    }

    for(i = (len2 - 1),j = 0;i >= 0;i--,j++) {

        s2[i] = (b[j] - '0');

    }

    bool flag1 = 0,flag2 = 0;

    if(len1 < len2) len1 = len2;

    for(i = 0;i < len1 + 1;i++) {

        s3[i] += (s1[i] + s2[i]);

        if(s3[i] > 9) {

            s3[i + 1]++;

            s3[i] %= 10;

        }

    }

    for(i = (len1 + 1);i >= 0;i--) if(s3[i] != 0) break;

    if(i < 0) cout<<0;

    else for(;i >= 0;i--) cout<<s3[i];

    return 0;

}

百度网友c7e1877
2018-03-30 · TA获得超过4670个赞
知道大有可为答主
回答量:4996
采纳率:81%
帮助的人:1453万
展开全部
浮点数运行总会有误差,如果要进行准确值计算,那么可以用两个或以上的整数类型做成结构体,一个作为整数部分,一个作为小数部分,但是这样乘除结果的范围会很小
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式