Maison >développement back-end >C++ >Est-ce qu'il manque en C une fonction `round()` et comment peut-elle être implémentée ?
Arrondi à virgule flottante en C : l'absence de round()
Alors que des fonctions comme ceil() et floor() sont disponibles dans math.h pour arrondir les nombres à virgule flottante, la bibliothèque C standard ne dispose pas d'une fonction round() dédiée. Cela a conduit à la question de savoir si round() est manquant ou existe simplement sous un nom différent dans la norme C 98.
Implémentation d'une fonction round() personnalisée
Étant donné que round() n'est pas fourni nativement, les utilisateurs ont eu recours à la création de leurs propres implémentations. Une telle implémentation, basée sur la méthode de l'arrondi à moitié, est :
double round(double d) { return floor(d + 0.5); }
Cependant, il est important de noter que cette implémentation ne produit pas toujours les résultats souhaités, car elle arrondit des nombres qui sont exactement 0,5 d'un entier à l'entier pair le plus proche.
Arrondi alternatif Méthodes
D'autres méthodes d'arrondi existent, telles que l'arrondi au pair, qui fournit une approche d'arrondi moins biaisée et est préférée pour les arrondis de gros volumes.
Inclusion dans C 11
Heureusement, C 11 a introduit les fonctions round() intégrées, notamment std::round, std::lround et std::llround, qui fournissent un comportement d'arrondi standard pour différents types de données. Ces fonctions offrent une mise en œuvre plus robuste et efficace que les solutions personnalisées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!