高精度運算模板學習
阿新 • • 發佈:2018-02-04
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 }
高精度運算模板學習