把浮点数当成整数来乘,最后再加上小数点即可。
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;
}