1. 程式人生 > >高精度計算 除法 高精除以低精

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

刪除 ring ... sizeof end tdi 基本類 ets 調用

  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()函數的返回值為一個數字

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