Staging
v0.5.1
https://github.com/python/cpython
Revision 4eb18f9d5db1d87d78619540d41ee6b625468b74 authored by Martin v. Löwis on 14 September 2008, 20:22:39 UTC, committed by Martin v. Löwis on 14 September 2008, 20:22:39 UTC
1 parent 881c487
Raw File
Tip revision: 4eb18f9d5db1d87d78619540d41ee6b625468b74 authored by Martin v. Löwis on 14 September 2008, 20:22:39 UTC
Issue #3617: Include a licensing statement regarding the Microsoft C runtime in the Windows installer.
Tip revision: 4eb18f9
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