1. 程式人生 > >高精度運算模板學習

高精度運算模板學習

else pre 高精 har 需要 tro ascii post 整形

  • 高精度以低精度

註:c(字符串,高精度數)為被乘數,m(整形,低精度數)為乘數,t(字符串,高精度數)為運算結果

void mult(char c[],char t[],int m){
    int i,l,k,flag,add=0;
    char s[100];
    l=strlen(c);
    for(i=0;i<l;i++)    //將被乘數逆序並且映射為[0,10)
        s[l-i-1]=c[i]-48;
    for(i=0;i<l;i++){
        k=s[i]*m+add;   //第i位乘出來的結果
        if(k>=10
){ //需要進位 s[i]=k%10; add=k/10; flag=1; //標識位,關系到最後結果是否要增加一位 }else{ s[i]=k; add=0; flag=0; } } if(flag){ //如果有標誌位,就讓進位加到最後 l=i+1; s[i]=add; }else l=i; for(i=0;i<l;i++) //
將結果逆序並且映射為ASCII t[l-1-i]=s[i]+48; t[l]=0; //千萬不要忘了讓字符串最後一個元素為0 }


高精度運算模板學習