buff = mpf_get_str( NULL, &exp, 10, 0, res ); dtl = exp; dtr = strlen( buff ) - exp; gmp_printf ("%*.*Ff\n", dtl, dtr, res ); Which actually works.