把浮点数当成整数来乘,最后再加上小数点即可。
C++代码:
#include#include const int maxnum=100000; char s1[maxnum],s2[maxnum],ans[maxnum],temps[maxnum]; void add(char s[]) { int len_min=strlen(s)>strlen(ans) strlen(ans):strlen(s); int len_max=strlen(s) =0;--i) temps[i+n]=temps[i]; for(i=0;i =0;--i) { if(num1[i]=='.') break; dot++; } if(i<0) dot=0; int flag=0; for(i=0;num1[i]!=0;++i) { if(num1[i]!='.') s1[i-flag]=num1[i]; else flag=1; } s1[i]=0; switch_str(s1); strcpy(s2,s1); strcpy(ans,s1); for(j=1;j =0&&(ans[i]==0||ans[i]=='0');--i) ans[i]=0; dot=dot*n; if(strlen(ans)<=dot) { printf("."); for(i=dot-1;i>strlen(ans)-1;--i) printf("0"); for(;i>=0;--i) printf("%c",ans[i]); printf("\n"); } else { for(i=strlen(ans)-1;i>dot-1;--i) printf("%c",ans[i]); flag=1; for(j=0;j<=i;++j) { if(ans[j]!='0') { flag=0; break; } } if(j>i) printf("\n"); else { printf("."); for(;i>=j;--i) printf("%c",ans[i]); printf("\n"); } } } return 0; }