12345678910111213141516171819 |
- #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);
- return buf;
- }
|