Staging
v0.5.1
https://github.com/python/cpython
Revision fc521498bbaf92c2920cca026ca69424298bd9d7 authored by Ezio Melotti on 02 August 2010, 20:52:47 UTC, committed by Ezio Melotti on 02 August 2010, 20:52:47 UTC
1 parent 5ee50bb
Raw File
Tip revision: fc521498bbaf92c2920cca026ca69424298bd9d7 authored by Ezio Melotti on 02 August 2010, 20:52:47 UTC
Fix test_bool. operator.isCallable() doesn't raise a warning on 2.6.
Tip revision: fc52149
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