Staging
v0.5.1
https://github.com/python/cpython
Revision 62460bb376fda652834e27d7b8e13ca9a1733a1f authored by cvs2svn on 24 September 2003, 00:51:10 UTC, committed by cvs2svn on 24 September 2003, 00:51:10 UTC
1 parent fb6095a
Raw File
Tip revision: 62460bb376fda652834e27d7b8e13ca9a1733a1f authored by cvs2svn on 24 September 2003, 00:51:10 UTC
This commit was manufactured by cvs2svn to create tag 'r231'.
Tip revision: 62460bb
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