En C++, la bibliothèque mathématique propose déjà les fonctions ceil et floor, lesquelles permettent respectivement d'effectuer un arrondissement à l'entier supérieur ou à l'entier inférieur. Toutefois, pendant longtemps, elle n'offrait pas de fonction réalisant un arrondissement classique, c'est-à-dire celui que l'on apprend dans les livres de mathématiques, où une fraction inférieure à 0,5 est arrondie vers le bas et une fraction égale ou supérieure à 0,5 est arrondie vers le haut. Cette fonctionnalité est pourtant disponible depuis longtemps dans plusieurs autres langages de programmation, comme PHP, ce qui peut surprendre les programmeurs qui passent d'un langage à l'autre. Malgré la grande simplicité de l'algorithme nécessaire pour réaliser cette opération, il est étonnamment difficile de trouver une explication claire ou une implémentation concise dans les nombreux forums de discussion ou sites consacrés au C++. C'est précisément pour répondre à ce besoin qu'a été rédigée cette page. Le programme C++ suivant montre comment écrire facilement une fonction round en s'appuyant uniquement sur la fonction floor fournie par l'en-tête <math.h>. Cette approche permet d'obtenir un comportement d'arrondissement simple, rapide et compatible avec les règles classiques enseignées en mathématiques, tout en illustrant qu'il est souvent possible de reconstruire une fonction manquante à partir d'outils déjà présents dans la bibliothèque standard du langage :
on obtiendra le résultat suivant :
Le nombre -2.000000 est arrondie à -2Le nombre -1.900000 est arrondie à -2
Le nombre -1.800000 est arrondie à -2
Le nombre -1.700000 est arrondie à -2
Le nombre -1.600000 est arrondie à -2
Le nombre -1.500000 est arrondie à -1
Le nombre -1.400000 est arrondie à -1
Le nombre -1.300000 est arrondie à -1
Le nombre -1.200000 est arrondie à -1
Le nombre -1.100000 est arrondie à -1
Le nombre -1.000000 est arrondie à -1
Le nombre -0.900000 est arrondie à -1
Le nombre -0.800000 est arrondie à -1
Le nombre -0.700000 est arrondie à -1
Le nombre -0.600000 est arrondie à -1
Le nombre -0.500000 est arrondie à 0
Le nombre -0.400000 est arrondie à 0
Le nombre -0.300000 est arrondie à 0
Le nombre -0.200000 est arrondie à 0
Le nombre -0.100000 est arrondie à 0
Le nombre 0.000000 est arrondie à 0
Le nombre 0.100000 est arrondie à 0
Le nombre 0.200000 est arrondie à 0
Le nombre 0.300000 est arrondie à 0
Le nombre 0.400000 est arrondie à 0
Le nombre 0.500000 est arrondie à 1
Le nombre 0.600000 est arrondie à 1
Le nombre 0.700000 est arrondie à 1
Le nombre 0.800000 est arrondie à 1
Le nombre 0.900000 est arrondie à 1
Le nombre 1.000000 est arrondie à 1
Le nombre 1.100000 est arrondie à 1
Le nombre 1.200000 est arrondie à 1
Le nombre 1.300000 est arrondie à 1
Le nombre 1.400000 est arrondie à 1
Le nombre 1.500000 est arrondie à 2
Le nombre 1.600000 est arrondie à 2
Le nombre 1.700000 est arrondie à 2
Le nombre 1.800000 est arrondie à 2
Le nombre 1.900000 est arrondie à 2