| 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 |