#include #include #include #include void render_float (char *buf, size_t sz, double d) { int i; char *dummy; for (i = 0; i < 40; i++) { snprintf(buf, sz, "%.*g", i, d); if (!isfinite(d) || strtod(buf, &dummy) == d) return; } abort(); }