Staging
v0.5.1
https://github.com/python/cpython
Revision 60766c47e7008149e3f4091bebe9ee25a0b98bd2 authored by Benjamin Peterson on 06 December 2014, 02:59:35 UTC, committed by Benjamin Peterson on 06 December 2014, 02:59:35 UTC
1 parent 238afb7
Raw File
Tip revision: 60766c47e7008149e3f4091bebe9ee25a0b98bd2 authored by Benjamin Peterson on 06 December 2014, 02:59:35 UTC
allow ssl module to compile if openssl doesn't support SSL 3 (closes #22935)
Tip revision: 60766c4
atof.c

/* Just in case you haven't got an atof() around...
   This one doesn't check for bad syntax or overflow,
   and is slow and inaccurate.
   But it's good enough for the occasional string literal... */

#include "pyconfig.h"

#include <ctype.h>

double atof(char *s)
{
    double a = 0.0;
    int e = 0;
    int c;
    while ((c = *s++) != '\0' && isdigit(c)) {
        a = a*10.0 + (c - '0');
    }
    if (c == '.') {
        while ((c = *s++) != '\0' && isdigit(c)) {
            a = a*10.0 + (c - '0');
            e = e-1;
        }
    }
    if (c == 'e' || c == 'E') {
        int sign = 1;
        int i = 0;
        c = *s++;
        if (c == '+')
            c = *s++;
        else if (c == '-') {
            c = *s++;
            sign = -1;
        }
        while (isdigit(c)) {
            i = i*10 + (c - '0');
            c = *s++;
        }
        e += i*sign;
    }
    while (e > 0) {
        a *= 10.0;
        e--;
    }
    while (e < 0) {
        a *= 0.1;
        e++;
    }
    return a;
}
back to top