Chinaunix首页 | 论坛 | 博客
  • 博客访问: 347177
  • 博文数量: 78
  • 博客积分: 3380
  • 博客等级: 中校
  • 技术积分: 857
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-16 19:39
文章分类

全部博文(78)

文章存档

2011年(31)

2010年(47)

分类: C/C++

2011-06-02 17:47:54

double StrToInt(char *ch)
{
 double d = 0;
 double d1[50];//分别存储数据的整数与小数部分的数字
 double d2[50];
 int count1=0;//迭代并记录数组中的元素数
 int count2=0;
 double db1=0;//整数部分值
 double db2=0;//小数部分值 
 int flag=0;//判断是整数部分还是小数部分
 int len=strlen(ch);
 int ix,i=0,j;
 if(len>0 && ch[0]!='-')//正数的转换
 {
  for(ix=0;ix  {
   if(ch[ix]!='.'&& flag==0)//整数部分
   {
    d1[count1]=(double)(ch[ix]-'0');
    count1++;
   }
   if(ch[ix]=='.')
   {
    flag=1;
    continue;
   }
   if(flag==1)//小数部分
   {
    d2[count2]=(double)(ch[ix]-'0');
    count2++;
   }
  }
  
  //整数部分
  for(j=count1-1;i  {
   db1+=d1[i]*pow(10.0,(double)j);
  }
  //小数部分
  for(i=0;i  {
   db2+=d2[i]/pow(10.0,(double)(i+1));
  }
  d=db1+db2;
 }
 else if(len>0 && ch[0]=='-')
 {
  for(ix=0;ix  { //如果迭代到负号则跳过
   if(ch[ix]=='-')
   {
    continue;
   }
   if(ch[ix]!='.'&& flag==0)
   {
    d1[count1]=(double)(ch[ix]-'0');
    count1++;
   }
   if(ch[ix]=='.')
   {
    flag=1;
    continue;
   }
   if(flag==1)
   {
    d2[count2]=(double)(ch[ix]-'0');
    count2++;
   }
  }  
  for(j=count1-1;i  {
   db1+=d1[i]*pow(10.0,(double)j);
  }
  for(i=0;i  {
   db2+=(double)d2[i]/pow(10.0,(double)(i+1));
  }
  d=(-1)*(db1+db2);
 }
 return d;
}
阅读(862) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~