web-dev-qa-db-fra.com

Arrondir de haut en bas un nombre C ++

J'essaie de permettre à mon programme d'arrondir un nombre respectivement de haut en bas.

Par exemple, si le nombre est 3.6, Mon programme est supposé arrondir le nombre le plus proche qui est 4 et si le nombre est 3.4, Il sera arrondi à 3.

J'ai essayé d'utiliser la bibliothèque ceil pour obtenir la moyenne de 3 éléments.

results = ceil((marks1 + marks2 + marks3)/3)

Cependant, le ceil arrondit uniquement le nombre vers le bas mais ne le fait pas remonter.

Il y a 1 algorithme sur lequel je suis tombé

var roundedVal = Math.round(origVal*20)/20;

mais je ne peux toujours pas trouver de formule pour un problème.

11
std::ceil 

arrondit à l'entier le plus proche

std::floor 

arrondit à l'entier le plus proche

std::round 

effectue le comportement que vous attendez

veuillez donner un cas d'utilisation avec des chiffres si cela ne vous fournit pas ce dont vous avez besoin!

16

La fonction dont vous avez besoin s'appelle round , croyez-le ou non.

ceil arrondit vers le haut, btw. C'est-à-dire, au plus grand entier le plus proche. floor arrondit vers le bas.

6
Violet Giraffe

std::round peut être celui que vous recherchez. Cependant, gardez à l'esprit qu'il renvoie un flotteur. Vous pouvez essayer lround ou llround pour obtenir un résultat en long ou en long long (C++ 11).

http://en.cppreference.com/w/cpp/numeric/math/round

4
怀春춘

Vous n'avez pas besoin d'une fonction pour arrondir en C ou C++. Vous pouvez simplement utiliser une astuce simple. Ajoutez 0,5, puis convertissez-le en un entier. C'est probablement tout ce que l'on fait de toute façon.

double d = 3.1415;
double d2 = 4.7;
int i1 = (int)(d + 0.5);
int i2 = (int)(d2 + 0.5);

i1 vaut 3 et i2 vaut 5. Vous pouvez le vérifier vous-même.

3
MarcD