字符串轉換成浮點數


double string_to_float(uint8_t *str)
{
    uint8_t i,j,k,negative=0;
    #define s_temp str
    double result=0.0,result_1=0.0;
    
    for(i=0;i<10;i++)
    {
        j=str[i];
        if(j==0||((j<'0'||j>'9')&&(j!='.')&&(j!='-')))break;             
    }
    k=j=i;    //數值的個數
    for(i=0;i<j;i++)    //查找小數點的位置,結束后小數點位於第i+1位
    {
         if(s_temp[i]=='.')break;         
    }  
    for(j=0;j<i;j++)
    {
        if(s_temp[j]=='-')     {negative=1;continue;}        
        result = result*10+(s_temp[j]-'0');            
    }
    j++;    //加1后j=i+1,即小數點的位置
    i=j;    //第一個小數的位置
    for(; j<k; j++)
    {
        if(s_temp[j]<'0'||s_temp[j]>'9')break;    //非法字符,返回
        result_1 = result_1*10+(s_temp[j]-'0');      
    }
    for(j=0; j<(k-i); j++)
    {
        result_1 *= 0.1;
    }
    result += result_1;
   
    if(negative)
    {
        result = -result;
    }
    
    return result;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM