Staging
v0.5.1
https://github.com/python/cpython
Revision c6606edc8654a88b7925fc4b729d73e4c4da6c77 authored by Zachary Ware on 22 April 2014, 20:36:11 UTC, committed by Zachary Ware on 22 April 2014, 20:36:11 UTC
1 parent 46b6c08
Raw File
Tip revision: c6606edc8654a88b7925fc4b729d73e4c4da6c77 authored by Zachary Ware on 22 April 2014, 20:36:11 UTC
Issue #21303, #20565: Updated the version of Tcl/Tk used on Windows
Tip revision: c6606ed
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