#include <stdio.h>
void double_to_string(char buf[], int size, double d) {
for (int i = 0; i < size; i++) {
double tmp;
// int snprintf(char *str, size_t size, const char *format, …);
if (snprintf(buf, size, "%.*g", i, d) >= size) {
break;
}
sscanf(buf, "%lf", &tmp);
if (tmp == d) {
break;
}
}
}
int main() {
char str[16] = "";
double d = 23445.938076;
double_to_string(str, 16, d);
puts(str);
return 0;
}
/*
run:
23445.938076
*/