Staging
v0.8.1
https://github.com/python/cpython
Revision ea88cc6bdf66b09c6ff7ca44605ab752311e93cf authored by Jack Jansen on 27 November 2003, 22:52:58 UTC, committed by Jack Jansen on 27 November 2003, 22:52:58 UTC
1 parent deefec9
Raw File
Tip revision: ea88cc6bdf66b09c6ff7ca44605ab752311e93cf authored by Jack Jansen on 27 November 2003, 22:52:58 UTC
Added preliminary notes on creating the MacPython for Panther additions
Tip revision: ea88cc6
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