Staging
v0.5.1
https://github.com/python/cpython
Revision d893fd68bd8a7be8e0ceb17e3b9ea810de5820e0 authored by Tim Peters on 05 September 2001, 06:24:24 UTC, committed by Tim Peters on 05 September 2001, 06:24:24 UTC
1 parent 57f282a
Raw File
Tip revision: d893fd68bd8a7be8e0ceb17e3b9ea810de5820e0 authored by Tim Peters on 05 September 2001, 06:24:24 UTC
Repair indentation.
Tip revision: d893fd6
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