Staging
v0.5.1
https://github.com/python/cpython
Revision 10cf7d947d9d9cc12edef02bfb70db4ff959d8bb authored by Andrew M. Kuchling on 07 July 2008, 16:51:09 UTC, committed by Andrew M. Kuchling on 07 July 2008, 16:51:09 UTC
1 parent 2c7ca9b
Raw File
Tip revision: 10cf7d947d9d9cc12edef02bfb70db4ff959d8bb authored by Andrew M. Kuchling on 07 July 2008, 16:51:09 UTC
Fix example to match text
Tip revision: 10cf7d9
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