241 votes

Round() pour float en C++

J’ai besoin d’une simple virgule flottante arrondi fonction, donc :

Je peux trouver ceil() et floor() math.h - mais pas round().

Il est présent dans la bibliothèque C++ standard sous un autre nom, ou il manque ??

143voto

Andreas Magnusson Points 4442

Il n'y a pas de round() en C++98 de la bibliothèque standard. Vous pouvez écrire vous-même:

double round(double d)
{
  return floor(d + 0.5);
}

La raison probable il n'y a pas de fonction en C++98 de la bibliothèque standard, c'est qu'il peut en fait être mis en œuvre de différentes façons. Le ci-dessus est une façon courante, mais il en existe d'autres tels que la tour-de-même, ce qui est moins biaisé et généralement mieux si vous allez faire beaucoup de l'arrondissement; c'est un peu plus complexe à mettre en œuvre.

96voto

Daniel Wolf Points 1528

Boost offre un ensemble simple de fonctions d’arrondi.

Pour plus d’informations, consultez la documentation de Boost.

71voto

kalaxy Points 561

Il peut être intéressant de noter que si vous vouliez un résultat entier de l’arrondi, que vous n’avez pas besoin de passer dans l’autre ceil ou de plancher. Par exemple,

48voto

schibum Points 421

Il est disponible depuis le C ++11 dans cmath (selon http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf)

Sortie :

28voto

MSN Points 30386

Il est généralement implémentée comme `` .

Edit : et on l’appelle probablement pas rond puisqu’il n’y a au moins trois algorithmes arrondis que je connaisse : tour à zéro, arrondir à l’entier le plus proche, et le banquier est arrondi. Vous demandez pour la ronde au nombre entier le plus proche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X