Mercurial > cpython-lru_cache-weakref
view Python/atof.c @ 65221:faa4e22aaba7 2.7
Blocked revisions 85322,85326 via svnmerge
........
r85322 | r.david.murray | 2010-10-08 11:55:28 -0400 (Fri, 08 Oct 2010) | 8 lines
#4661: add bytes parsing and generation to email (email version bump to 5.1.0)
The work on this is not 100% complete, but everything is present to
allow real-world testing of the code. The only remaining major todo
item is to (hopefully!) enhance the handling of non-ASCII bytes in headers
converted to unicode by RFC2047 encoding them rather than replacing them with
'?'s.
........
r85326 | r.david.murray | 2010-10-08 17:37:39 -0400 (Fri, 08 Oct 2010) | 2 lines
What's new entry for email 5.1.
........
| author | R. David Murray <rdmurray@bitdance.com> |
|---|---|
| date | Tue, 12 Oct 2010 14:16:46 +0000 |
| parents | fd25030223b0 |
| children |
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; }
