Staging
v0.5.1
https://github.com/python/cpython
Revision 1d7a3489e97f58b919b6aa2b992022fb91059e6c authored by Raymond Hettinger on 14 July 2003, 07:07:12 UTC, committed by Raymond Hettinger on 14 July 2003, 07:07:12 UTC
1 parent 92f200b
Raw File
Tip revision: 1d7a3489e97f58b919b6aa2b992022fb91059e6c authored by Raymond Hettinger on 14 July 2003, 07:07:12 UTC
SF patch #770521: make itertools type declarations static
Tip revision: 1d7a348
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