Staging
v0.5.1
https://github.com/python/cpython
Revision d1229f56512c0d8dc3fd70889f1533a6fa0ece33 authored by Jim Fulton on 06 October 2000, 19:21:32 UTC, committed by Jim Fulton on 06 October 2000, 19:21:32 UTC
Added missing clode to make the clode test test a close. ;)
1 parent 6d699ca
Raw File
Tip revision: d1229f56512c0d8dc3fd70889f1533a6fa0ece33 authored by Jim Fulton on 06 October 2000, 19:21:32 UTC
Uncommented tests that failed for cStringIO,
Tip revision: d1229f5
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