Staging
v0.5.1
https://github.com/python/cpython
Revision 0ae1490d6fb8f762eb0df4f9a03e892641f228b4 authored by cvs2svn on 02 January 2001, 17:07:49 UTC, committed by cvs2svn on 02 January 2001, 17:07:49 UTC
1 parent ff139a8
Raw File
Tip revision: 0ae1490d6fb8f762eb0df4f9a03e892641f228b4 authored by cvs2svn on 02 January 2001, 17:07:49 UTC
This commit was manufactured by cvs2svn to create branch
Tip revision: 0ae1490
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 "config.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