Comment arrondir un double à un int en C++

Jinku Hu 12 octobre 2023
  1. Utilisez la fonction round() pour l’arrondi d’un double à un entier
  2. Utilisez la fonction lround() pour convertir le double en l’entier le plus proche
  3. Utilisez la fonction trunc() pour l’arrondi de Double à Int
Comment arrondir un double à un int en C++

Cet article explique plusieurs méthodes pour arrondir un double à un nombre entier en C++.

Utilisez la fonction round() pour l’arrondi d’un double à un entier

La fonction round() est définie dans l’en-tête <cmath>. Elle peut calculer la valeur entière la plus proche de l’argument que l’utilisateur passe. Les cas intermédiaires sont arrondis à partir de zéro, et la valeur retournée est du même type que l’argument. Dans l’exemple suivant, nous initialisons un vecteur arbitraire de doubles et sortons la fonction round() pour chaque élément.

#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;
}

Production:

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

Utilisez la fonction lround() pour convertir le double en l’entier le plus proche

On peut aussi utiliser la fonction lround(), qui se comporte presque de la même manière que la fonction round() avec une différence : elle retourne la valeur dans un format d’entier long. Notez que, pour les deux fonctions, la valeur retournée peut être inattendue, en raison des différentes erreurs d’arrondi, qui sont omniprésentes. Les scénarios correspondants doivent être traités comme indiqué dans la documentation ici.

#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;
}

Utilisez la fonction trunc() pour l’arrondi de Double à Int

trunc() est une autre fonction utile de l’en-tête <cmath>, qui calcule l’entier le plus proche non supérieur au nombre passé en argument. trunc() calcule la valeur de retour dans le format en virgule float comme round(). Notez que ces deux fonctions ne prennent aucun effet du mode d’arrondi actuel. Les cas de gestion des erreurs sont décrits dans la page de manuel.

#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
Auteur: 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

Article connexe - C++ Double