Mercurial > cpython-lru_cache-weakref
view Python/atof.c @ 50640:368df0060740 3.0
Blocked revisions 68417 via svnmerge
................
r68417 | tarek.ziade | 2009-01-09 01:15:45 +0100 (Fri, 09 Jan 2009) | 9 lines
Merged revisions 68415 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68415 | tarek.ziade | 2009-01-09 00:56:31 +0100 (Fri, 09 Jan 2009) | 1 line
fixed #4394 make the storage of the password optional in .pypirc
........
................
| author | Tarek Ziadé <ziade.tarek@gmail.com> |
|---|---|
| date | Fri, 09 Jan 2009 00:17:40 +0000 |
| parents | 2dea40e40d9d |
| children | fd25030223b0 |
line wrap: on
line source
/* 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; }
