#include<stdio.h>
#define N 20
int num(int i)
{
int j,a,b;
a=1;
b=10;
for(j=0;j<i;j++)
a*=b;
return a;
}
float num1(int i,int b1)
{
float a,b;
a=b=0.1;
for(b1;b1<i;b1++)
a*=b;
return a;
}
void main()
{
char a[N];
int i,j=0,sum=0,j1=0,t,b1;
float sum1=0;
printf("输入字符为数字\n");
gets(a);
for(i=0;a[i]!='\0';i++)
if(a[i]=='.')
j=i;
t=i;
j1=i-1;
b1=i=j+1;
if(j!=0)
for(;i<=j1;i++)
sum1+=(a[i]-48)*num1(i,b1);
if(j==0)
j=t;
for(i=0;i<j;i++)
sum+=(a[j-i-1]-48)*num(i);
sum1=sum+sum1;
printf("转换完毕:%f\n",sum1);
}
说明:输入负数无效。
如果还有更好算法请介绍。