高精度计算 除法 高精除以低精

Posted xuwanwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高精度计算 除法 高精除以低精相关的知识,希望对你有一定的参考价值。

  1. 高精度就是很长很长的数字
  2. 低精就是可以直接存在基本类型(int short double...)的数字
  3. 两个正整数,一个是高精度,一个是低精度,求整除部分,不求余数。//其实就算要负数也很好解决
  4. //两个正整数,高精度除以低精度,只求整除部分,不求余数 
    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    int main()
    {
        char a1[100];
        int a[100],ans[100],lena,rm=0,lenans,b;    //高精a除以低精b 
        memset(a,0,sizeof(a));
        memset(ans,0,sizeof(ans));
        gets(a1);
        cin>>b;
        //!lena=a1.strlen();这样的写法是错误的,区别stirng类的s.length()和char[]的strlen(char[]); 
        lena=strlen(a1);
        for(int i=1;i<=lena;i++)        //顺序 
        {
            a[i]=a1[i-1]-48;
         } 
        for(int i=1;i<=lena;i++)
        {
            ans[i]=(rm*10+a[i])/b;    //注意这里是都是对第i位操作 
            rm=(rm*10+a[i])%b;        //每次算的余数都是这个rm,直接用"%"符号就可以了 
        }
        lenans=1;
        while(ans[lenans]==0&&lenans!=lena)
        {
            lenans++;
        }
        for(int i=lenans;i<=lena;i++)        //通过控制输出来删除前导 ,因为很难删除数组的元素,数组不像动态链表那样用delete 
        {
            cout<<ans[i];
        }
        cout<<endl;
    }

     

  5. %--求余的好工具
  6. 区别
    1. string a;
      cin>>a;
      int lena;
      lena=s.length();

       

    2. char a[100];
      gets(a);
      int lena;
      lena=strlen(a);

       

    3. 注意一个是用“.”点来访问的,一个是调用strlen()函数,可以看出strlen()函数的返回值为一个数字

以上是关于高精度计算 除法 高精除以低精的主要内容,如果未能解决你的问题,请参考以下文章

高精度 加法 减法 乘法 除法 整合

高精度除法

高精除低精

高精计算~~~

高精度高精度数除以低精度数I

压位高精