Staging
v0.5.1
https://github.com/python/cpython
Revision a9aff014a86d40924e9f44f62cec2632b53ede11 authored by Martin v. Löwis on 13 September 2008, 08:36:22 UTC, committed by Martin v. Löwis on 13 September 2008, 08:36:22 UTC
1 parent ab0b29b
Raw File
Tip revision: a9aff014a86d40924e9f44f62cec2632b53ede11 authored by Martin v. Löwis on 13 September 2008, 08:36:22 UTC
Change product code of Win64 installer to allow simultaneous installation on Win32 and Win64; also change product name to be able to distinguish the two in ARP.
Tip revision: a9aff01
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