github.com/afumu/libc@v0.0.6/musl/src/stdlib/ecvt.c (about) 1 #define _GNU_SOURCE 2 #include <stdlib.h> 3 #include <stdio.h> 4 5 char *ecvt(double x, int n, int *dp, int *sign) 6 { 7 static char buf[16]; 8 char tmp[32]; 9 int i, j; 10 11 if (n-1U > 15) 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 }