diff options
| author | pefavel <[email protected]> | 2026-03-16 13:37:47 +0300 |
|---|---|---|
| committer | pefavel <[email protected]> | 2026-03-16 16:54:59 +0300 |
| commit | 270b7a3b0ea1e5f7485320b502c5b5b91da457ab (patch) | |
| tree | 45a0524743c578d300fea2765284c965b8af62ed /contrib/tools/python/src/Python/atof.c | |
| parent | de561d04b1e2e861ed3e823d3809f3ae05542dd4 (diff) | |
add fastapi to piglet config
commit_hash:6962a6b28ec3ee5fdc2392a2415810aaa54943c4
Diffstat (limited to 'contrib/tools/python/src/Python/atof.c')
| -rw-r--r-- | contrib/tools/python/src/Python/atof.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/contrib/tools/python/src/Python/atof.c b/contrib/tools/python/src/Python/atof.c new file mode 100644 index 00000000000..562fcd688e8 --- /dev/null +++ b/contrib/tools/python/src/Python/atof.c @@ -0,0 +1,50 @@ + +/* 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; +} |
