以下程序是我自己编的,实现2-9进制之内任意进制的小数转换(只实现小数,不包含整数)

#include<iostream.h>
#include<cmath>

const float e=0.0001;
const int maxsize=10;
void stack_show(int top,int stack[maxsize]);
int stack_push(int top,int data,int stack[maxsize]);
float convert(float radix1,float floatdata);
int stack[maxsize];

int main(void)
{
  float floatdata,condata;
  float radix1,radix2;
  int  top=-1;
  int count=6;
  cout<<"输入a进制的小数a1"<<endl;
  cin>>radix1>>floatdata;
  cout<<"输入要求转换的进制"<<endl;
  cin>>radix2;
  condata=convert(radix1,floatdata);
  do
  {
     condata=condata*radix2;
     top=stack_push(top,int(condata),stack);
     condata=condata-int(condata);
     count--;
  }while(count);
    stack_show(top,stack);
    return 0;
}


/*****************进栈*************/
int stack_push(int top,int data,int stack[maxsize])
{
   
  if(top==maxsize-1) 
     cout<<"栈溢出"<<endl;
  else
    {
      top++;
      stack[top]=data;
      
    }
  return top;
}


/****************将小数转换为10进制*************/
float convert(float radix,float data)
{
  float sum=0.0,s1;
  int d,count1=0,count2=6;
  
  d=(int)(data*10.0);
  do
  {
     count1++;
     
     sum+=d*pow(1.0/radix,count1);
     
     s1=data*10;
     data=s1-(int)s1;
     
    d=(int)(data*10.0);
    count2--;
  }while(count2);
     
  
  return sum;
}


/********显示***********/
void stack_show(int top,int stack[maxsize])
{  
  int d=0;
  cout<<"0.";
   do
   {
      cout<<stack[d];
      d++;
   }while(d<=top);
  cout<<endl;
}


可以运行,转换的结果有些是对的,但有些还有一定的误差,我就知道这个方法不好,不知道各位有什么好的方法