OLD | NEW |
1 #define _GNU_SOURCE | 1 #define _GNU_SOURCE |
2 #include <stdlib.h> | 2 #include <stdlib.h> |
3 #include <stdio.h> | 3 #include <stdio.h> |
4 #include <string.h> | 4 #include <string.h> |
5 | 5 |
6 char *fcvt(double x, int n, int *dp, int *sign) | 6 char* fcvt(double x, int n, int* dp, int* sign) { |
7 { | 7 char tmp[1500]; |
8 » char tmp[1500]; | 8 int i, lz; |
9 » int i, lz; | |
10 | 9 |
11 » if (n > 1400U) n = 1400; | 10 if (n > 1400U) |
12 » sprintf(tmp, "%.*f", n, x); | 11 n = 1400; |
13 » i = (tmp[0] == '-'); | 12 sprintf(tmp, "%.*f", n, x); |
14 » if (tmp[i] == '0') lz = strspn(tmp+i+2, "0"); | 13 i = (tmp[0] == '-'); |
15 » else lz = -(int)strcspn(tmp+i, "."); | 14 if (tmp[i] == '0') |
| 15 lz = strspn(tmp + i + 2, "0"); |
| 16 else |
| 17 lz = -(int)strcspn(tmp + i, "."); |
16 | 18 |
17 » if (n<=lz) { | 19 if (n <= lz) { |
18 » » *sign = i; | 20 *sign = i; |
19 » » *dp = 1; | 21 *dp = 1; |
20 » » if (n>14U) n = 14; | 22 if (n > 14U) |
21 » » return "000000000000000"+14-n; | 23 n = 14; |
22 » } | 24 return "000000000000000" + 14 - n; |
| 25 } |
23 | 26 |
24 » return ecvt(x, n-lz, dp, sign); | 27 return ecvt(x, n - lz, dp, sign); |
25 } | 28 } |
OLD | NEW |