Ejemplo n.º 1
0
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;
}