Como arredondar um duplo para um Int em C++

Jinku Hu 12 outubro 2023
  1. Utilize a função round() para arredondamento do dobro para um inteiro
  2. Utilize a função lround() para converter o dobro para o inteiro mais próximo
  3. Utilize a trunc() Função para Arredondamento Duplo a Int
Como arredondar um duplo para um Int em C++

Este artigo explicará vários métodos de como arredondar um duplo para um número inteiro em C++.

Utilize a função round() para arredondamento do dobro para um inteiro

A função round() é definida no cabeçalho <cmath>. Ela pode computar o valor inteiro mais próximo do argumento que o usuário passa. As caixas de meio-termo são arredondadas de zero, e o valor retornado é do mesmo tipo que o argumento. No exemplo a seguir, inicializamos um vetor arbitrário de duplas e emitimos a função round() para cada elemento.

#include <cmath>
#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<double> dfloats{-3.5, -21.1, -1.99, 0.129, 2.5, 3.111};

  for (auto &item : dfloats) {
    cout << "round(" << item << ") = " << round(item) << endl;
  }

  return EXIT_SUCCESS;
}

Resultado:

round(-3.5) = -4
round(-21.1) = -21
round(-1.99) = -2
round(0.129) = 0
round(2.5) = 3
round(3.111) = 3

Utilize a função lround() para converter o dobro para o inteiro mais próximo

Alternativamente, podemos utilizar a função lround(), que se comporta de forma quase idêntica à função round() com uma diferença: ela retorna o valor em um formato inteiro long. Note que, para ambas as funções, o valor de retorno pode ser inesperado, causado por diferentes erros de arredondamento, que são onipresentes. Os cenários correspondentes devem ser tratados conforme especificado na documentação aqui.

#include <cmath>
#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<double> dfloats{-3.5, -21.1, -1.99, 0.129, 2.5, 3.111};

  for (auto &item : dfloats) {
    cout << "round(" << item << ") = " << lround(item) << endl;
  }

  return EXIT_SUCCESS;
}

Utilize a trunc() Função para Arredondamento Duplo a Int

trunc() é outra função útil do cabeçalho <cmath>, que calcula o inteiro mais próximo não maior do que o número passado como argumento. O trunc() calcula o valor de retorno no formato de ponto flutuante como round(). Observe que estas duas funções não têm qualquer efeito a partir do modo de arredondamento atual. Os casos de erro são descritos na página do manual.

#include <cmath>
#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<double> dfloats{-3.5, -21.1, -1.99, 0.129, 2.5, 3.111};

  for (auto &item : dfloats) {
    cout << "round(" << item << ") = " << trunc(item) << endl;
  }

  return EXIT_SUCCESS;
}
round(-3.5) = -3
round(-21.1) = -21
round(-1.99) = -1
round(0.129) = 0
round(2.5) = 2
round(3.111) = 3
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artigo relacionado - C++ Double