Mercurial > cpython-lru_cache-weakref
view Python/atof.c @ 47112:be581acea4e7
Blocked revisions 63392 via svnmerge
........
r63392 | alexandre.vassalotti | 2008-05-16 15:14:31 -0400 (Fri, 16 May 2008) | 2 lines
Added Python 3.0 warning to cPickle.
........
| author | Alexandre Vassalotti <alexandre@peadrop.com> |
|---|---|
| date | Fri, 16 May 2008 19:17:34 +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; }
