Maison > développement back-end > C++ > Est-ce qu'il manque en C une fonction `round()` et comment peut-elle être implémentée ?

Est-ce qu'il manque en C une fonction `round()` et comment peut-elle être implémentée ?

Patricia Arquette
Libérer: 2024-12-23 06:46:14
original
938 Les gens l'ont consulté

Is C   Missing a `round()` Function, and How Can It Be Implemented?

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);
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal