Mercurial > cpython-lru_cache-weakref
view Python/atof.c @ 50401:7239fbcdcd4f 3.0
Merged revisions 68103 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r68103 | benjamin.peterson | 2008-12-31 08:51:07 -0600 (Wed, 31 Dec 2008) | 1 line
#4406 Directory has to inherit from commondialog.Dialog
........
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Wed, 31 Dec 2008 14:54:48 +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; }
