1 #define _GNU_SOURCE 2 #include <stdio.h> 3 #include <stdlib.h> 4 ecvt(double x,int n,int * dp,int * sign)5char* ecvt(double x, int n, int* dp, int* sign) { 6 static char buf[16]; 7 char tmp[32]; 8 int i, j; 9 10 if (n - 1U > 15) 11 n = 15; 12 sprintf(tmp, "%.*e", n - 1, x); 13 i = *sign = (tmp[0] == '-'); 14 for (j = 0; tmp[i] != 'e'; j += (tmp[i++] != '.')) 15 buf[j] = tmp[i]; 16 buf[j] = 0; 17 *dp = atoi(tmp + i + 1) + 1; 18 19 return buf; 20 } 21