Staging
v0.5.1
https://github.com/python/cpython
Revision eebd0173b6b7e8aeacbfcae6bb28dcdc8907e33f authored by Martin v. Löwis on 14 November 2010, 18:17:39 UTC, committed by Martin v. Löwis on 14 November 2010, 18:17:39 UTC
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r84487 | martin.v.loewis | 2010-09-04 16:38:09 +0200 (Sa, 04 Sep 2010) | 3 lines

  Issue #1303434: Include PDBs in release.
  Patch by James Lee and Daniel Stutzbach.
........
1 parent 501bfd8
Raw File
Tip revision: eebd0173b6b7e8aeacbfcae6bb28dcdc8907e33f authored by Martin v. Löwis on 14 November 2010, 18:17:39 UTC
Merged revisions 84487 via svnmerge from
Tip revision: eebd017
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