#include <stdio.h>
char *get_number_formatted(double f)
{
static char buf[128]; // this function is not thread-safe
int i, j;
i
= snprintf(buf
, 128, "%20.10f", f
) - 2;
for (j = i - 8; i > j; --i)
if (buf[i] != '0')
break;
buf[i + 1] = '\0';
return buf;
}
int main(void)
{
int i;
for (i = -4; i < 5; ++i)
printf("%5d %s\n", i
, get_number_formatted
(pow(10.0, i
))); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpjaGFyICpnZXRfbnVtYmVyX2Zvcm1hdHRlZChkb3VibGUgZikKewogICAgc3RhdGljIGNoYXIgYnVmWzEyOF07IC8vIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRocmVhZC1zYWZlCiAgICBpbnQgaSwgajsKCiAgICBpID0gc25wcmludGYoYnVmLCAxMjgsICIlMjAuMTBmIiwgZikgLSAyOwoKICAgIGZvciAoaiA9IGkgLSA4OyBpID4gajsgLS1pKQogICAgICAgIGlmIChidWZbaV0gIT0gJzAnKQogICAgICAgICAgICBicmVhazsKCiAgICBidWZbaSArIDFdID0gJ1wwJzsKICAgIHJldHVybiBidWY7Cn0KCmludCBtYWluKHZvaWQpCnsKCWludCBpOwoJZm9yIChpID0gLTQ7IGkgPCA1OyArK2kpCiAgICAgICAgcHJpbnRmKCIlNWQgJXNcbiIsIGksIGdldF9udW1iZXJfZm9ybWF0dGVkKHBvdygxMC4wLCBpKSkpOwogICAgcmV0dXJuIDA7Cn0=