mpf_t x; mpf_init2(x,3000); mpf_set_str(x,"0.6931471805599453094172321214581765680755001343602552541206800094933936219696947156058633269964186875",10); char str[300]; mp_exp_t myexp; mpf_get_str(str, &myexp, 10, 99, x); mpf_clear(x); printf("%s\n",str); The last digit should be '8', but mpf_get_str outputs '7'.