c字符串快速转浮点数

//并非博主原创,是blogspot上某博主贴出的,忘了具体链接,向原博主表示歉意,有机会补上链接。
//速度飞快,甚至比atof()还有快!

double str2double(const char *p) 
{
    double r = 0.0;
    bool neg = false;
    if (*p == '-') {
        neg = true;
        ++p;
    }
    while (*p >= '0' && *p <= '9') {
        r = (r*10.0) + (*p - '0');
        ++p;
    }
    if (*p == '.') {
        double f = 0.0;
        int n = 0;
        ++p;
        while (*p >= '0' && *p <= '9') {
            f = (f*10.0) + (*p - '0');
            ++p;
            ++n;
        }
        r += f / std::pow(10.0, n);
    }
    if (neg) {
        r = -r;
    }
    return r;
}

posted @ 2020-09-21 23:24  Craftsman-lee  阅读(400)  评论(0)    收藏  举报