Pergunta

Eu estou tentando usar o GNU coreutil fórmula de topo para calcular usos de CPU em porcentagem. Mas top está usando algum half_total, para calcular a porcentagem, que é a adição de 0,5 à percentagem.

Em utils.c de de topo , a seguinte linha (em 3,8 beta1, é na linha número: 459): -

* fora ++ = (int) ((* Diffs ++ * 1000 + half_total) / total_change);

Isso se traduz em: ((* Diffs ++ * 1000) / total_change) + 1/2 Então, ele sempre dá um número, que é: "10 vezes a percentagem, mais de 0,5". Então, se o percentual é de x, ele retornará 10x + 0,5.

Alguém pode explicar como isso é média calculada? ou pelo menos alguns ponteiro onde posso obter a ajuda?

PS: Por que não podemos apenas usar (*diffs++/total_change) * 100 para obter o percentual exigido?

código-fonte do Top está localizado em: - http://downloads.sourceforge.net/unixtop /top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0

Foi útil?

Solução

Esta é a maneira de fazer arredondamento para valores inteiros, porque as devoluções de divisão a parte fracionária.

Quando você adiciona metade do divisor isso é equivalente a uma divisão de ponto flutuante e arredondando-se se a parte fracionária é de 0,5 ou superior.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top