Pregunta

Estoy tratando de usar GNU coreutil la fórmula de la parte superior para el cálculo de los usos de la CPU en porcentaje. Pero superior está utilizando algún half_total, para calcular el porcentaje, que es la adición de 0,5 al porcentaje.

En utils.c de la parte superior de fuente , la línea siguiente (al 3,8 beta1, es en número de línea: 459): -

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

Esto se traduce en: ((* Diffs ++ * 1000) / total_change) + 1/2 Por lo tanto, siempre da un número, que es: "10 veces el porcentaje, más 0,5". Así que si el porcentaje es x, volverá 10x + 0,5.

Puede alguien explicar cómo se calcula este promedio? o al menos algunos de puntero donde puedo conseguir la ayuda?

PS: ¿Por qué no podemos simplemente utilizar (*diffs++/total_change) * 100 para obtener el porcentaje requerido?

código fuente de Top se encuentra en: - http://downloads.sourceforge.net/unixtop /top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0

¿Fue útil?

Solución

Esta es la manera de hacerlo redondeo para valores enteros, debido a que la división descarta la parte fraccionaria.

Cuando se agrega la mitad el divisor esto es equivalente a una división de coma flotante y redondeo al alza si la parte fraccionaria es de 0,5 o superior.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top