Staging
v0.5.1
https://github.com/python/cpython
Revision f34bef2378460cacf97e8574148f5d5168f26bc8 authored by Eric Smith on 25 February 2010, 14:16:46 UTC, committed by Eric Smith on 25 February 2010, 14:16:46 UTC
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r78440 | eric.smith | 2010-02-25 09:14:35 -0500 (Thu, 25 Feb 2010) | 1 line

  Issue #5965: Add documentation for parts of format specification language.
........
1 parent 4649299
Raw File
Tip revision: f34bef2378460cacf97e8574148f5d5168f26bc8 authored by Eric Smith on 25 February 2010, 14:16:46 UTC
Merged revisions 78440 via svnmerge from
Tip revision: f34bef2
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