void print_mpf(mpf_class number, const unsigned int d) { mp_exp_t exp; string result = number.get_str(exp); // adding leading zeroes if (exp < 0) { result = string(-exp, '0').append(result); exp = 0; } // adding trailing zeroes else if (result.size() < exp) { result = result.append(string(exp - result.size(), '0')); exp = result.size(); } // adding point on the front if (exp == 0) { result = string("0.").append(result); exp = 1; } // adding point in the middle else if (exp < result.size()) { result = result .substr(0, exp) .append(".") .append(result.substr(exp, result.size())); } // rounding the number if (result.size() - exp > d) { result = result.substr(0, exp + d + 1); } cout << result << endl; }