⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1..txt

📁 浮点数高精度加法计算
💻 TXT
字号:
#include <iostream>
using namespace std;
int main()
{
    int n=0,posp1=0,posp2=0,posp3=0,pos1=0,pos2=0,len1=0,len2=0,flag=0;
    int nump1[105]={0},nump2[105]={0},nump3[105]={0};
    cin>>n;
    cin.get();
    char num1[105],num2[105];
    for(int i=1;i<=n;i++)
    {
        if(i>=2)
            cin.get();
        for(int j=0;j<105;j++)
        {
            nump1[j]=0;
            nump2[j]=0;
            nump3[j]=0;
        }
        posp1 = 0;
        posp2 = 0;
        posp3 = 0;
        flag = 0;
        cin.getline(num1,101,'\n');
        cin.getline(num2,101,'\n');
        len1=strlen(num1);
        len2=strlen(num2);
        for(int j=0;j<len1;j++)
            if(num1[j] == '.')
            {
                pos1=j;
                break;
            }
        for(int j=0;j<len2;j++)
            if(num2[j] == '.')
            {
                pos2=j;
                break;
            }
        //处理小数部分
        for(int j=pos1+1;j<len1;j++)
            nump3[posp3++]=num1[j] - '0';
        for(int j=pos2+1;j<len2;j++)
            nump2[posp2++]=num2[j] - '0';
        for(int j=max(posp3,posp2)-1;j>0;j--)
        {
            nump3[j] += nump2[j];
            if (nump3[j] >= 10)
            {
                nump3[j] -= 10;
                nump3[j-1] += 1;
            }
        }
        nump3[0] += nump2[0];
        if (nump3[0] >= 10)
        {
            flag=1;
            nump3[0] -= 10;
        }
        posp3=100;
        while(nump3[posp3] == 0 && posp3>=0)
        {
            posp3--;
        }
        for(int j=0;j<105;j++)
        {
            nump2[j]=0;
        }
        //处理整数部分
        posp2=0;
        for(int j=pos1-1;j>=0;j--)
            nump1[posp1++]=num1[j] - '0';
        for(int j=pos2-1;j>=0;j--)
            nump2[posp2++]=num2[j] - '0';
        if(flag == 1)
            nump1[0]++;
        for(int j=0;j<max(posp1,posp2);j++)
        {
            nump1[j] += nump2[j];
            if (nump1[j] >= 10)
            {
                nump1[j] -= 10;
                nump1[j+1] += 1;
            }
        }    
        posp1=100;
        while(nump1[posp1] == 0 && posp1>=0)
        {
            posp1--;
        }
        if (posp1 == -1)
            cout<<"0";
        else for(int j= posp1;j>=0;j--)
                cout<<nump1[j];
        cout<<".";
        for(int j=0;j<=posp3;j++)
            cout<<nump3[j];
        cout<<endl;
    }
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -