| #define _GNU_SOURCE | |
| #include <stdlib.h> | |
| #include <stdio.h> | |
| char *ecvt(double x, int n, int *dp, int *sign) | |
| { | |
| static char buf[16]; | |
| char tmp[32]; | |
| int i, j; | |
| if (n-1U > 15) n = 15; | |
| sprintf(tmp, "%.*e", n-1, x); | |
| i = *sign = (tmp[0]=='-'); | |
| for (j=0; tmp[i]!='e'; j+=(tmp[i++]!='.')) | |
| buf[j] = tmp[i]; | |
| buf[j] = 0; | |
| *dp = atoi(tmp+i+1)+1; | |
| return buf; | |
| } |