ecvt.c 336 B

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