Question

Je suis en train d'utiliser GNU coreutil la formule de calcul haut pour usages CPU en pourcentage. Mais le dessus utilise une half_total, pour calculer le pourcentage, ce qui ajoute 0,5 au pourcentage.

Dans utils.c de haut de source , la ligne suivante (à 3,8 beta1, il est dans le numéro de ligne: 459): -

* out ++ = (int) ((* diffs ++ * 1000 + half_total) / total_change);

Cela se traduit par: ((* Diffs ++ * 1000) / total_change) + 1/2 Ainsi, il donne toujours un certain nombre, qui est: « 10 fois le pourcentage, plus 0,5 ». Donc, si le pourcentage est x, il retournera 10x + 0,5.

Quelqu'un peut-il expliquer comment cette moyenne calculée? ou au moins un certain pointeur où je peux obtenir de l'aide?

PS: Pourquoi ne pouvons-nous utiliser juste (*diffs++/total_change) * 100 pour obtenir le pourcentage requis?

code source Top est situé à: - http://downloads.sourceforge.net/unixtop /top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0

Était-ce utile?

La solution

Ceci est la façon de le faire arrondi pour les valeurs entières, parce que la division rejette la partie décimale.

Lorsque vous ajoutez la moitié du diviseur, cela équivaut à une division à virgule flottante et arrondi vers le haut si la partie décimale est de 0,5 ou plus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top