Staging
v0.5.1
https://github.com/python/cpython
Revision ab16eae6c49de56fb217e0a024859630d0e1f4d0 authored by Fred Drake on 10 October 2002, 16:16:03 UTC, committed by Fred Drake on 10 October 2002, 16:16:03 UTC
1 parent 82053eb
Raw File
Tip revision: ab16eae6c49de56fb217e0a024859630d0e1f4d0 authored by Fred Drake on 10 October 2002, 16:16:03 UTC
Document when unittest was added to Python.
Tip revision: ab16eae
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