Staging
v0.5.1
https://github.com/python/cpython
Revision 95b0991af34944bc61176cad025a447318b124c3 authored by Tarek Ziadé on 29 August 2009, 13:37:34 UTC, committed by Tarek Ziadé on 29 August 2009, 13:37:34 UTC
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r74578 | tarek.ziade | 2009-08-29 15:33:21 +0200 (Sat, 29 Aug 2009) | 1 line

  fixed #6801: symmetric_difference_update also accepts pipe
........
1 parent 75be68b
Raw File
Tip revision: 95b0991af34944bc61176cad025a447318b124c3 authored by Tarek Ziadé on 29 August 2009, 13:37:34 UTC
Merged revisions 74578 via svnmerge from
Tip revision: 95b0991
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