牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

自己实现的 atof()函数

基本功能上是实现了,错误处理很烂.

double atof(const char* str)
{
    
if (str==0)return 0;
    
    
double nRet = 0.0f;
    
bool bSign = true;
    
bool bFlag = false;
    
bool bPoint = false;
    
bool bNum = false;
    
double nCount = 1.0f;
    
    
int nLen = 0;
    nLen 
= strlen(str);
    
if (nLen == 0return 0;
    
        
for (int i=0; i<nLen; ++i)
    {
        
if ( str[i] == ' ' && (!bFlag)) continue;
        
if ( str[i] >= '0' && str[i] <= '9'
        { 
            
if (bPoint) { nRet += ( str[i] - '0'/ pow(10.0f, nCount); ++nCount; }
            
else nRet = nRet * 10 + ( str[i] - '0');
            bNum 
= bFlag = true
            
continue;
        }
        
if ( (str[i] == '.'&& (!bPoint) && bNum) { bPoint = truecontinue; }
        
if ( str[i] == '+' && (!bFlag) ) { bFlag = bSign = truecontinue; }
        
if ( str[i] == '-' && (!bFlag) ) { bFlag = true; bSign = falsecontinue; }
        
break;
    }
    
if (!bSign) nRet = -nRet;
    
return nRet;
    
}


posted on 2007-07-21 14:34 杨粼波 阅读(1441) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理