2009-02-16 13 views
6

Sto cercando di utilizzare la formula di GNU coreutil top per calcolare gli utilizzi della CPU in percentuale. Ma la parte superiore sta usando alcuni mezzi mezzi, per calcolare la percentuale, che aggiunge 0,5 alla percentuale.Calcolo dell'utilizzo della CPU del comando superiore

In utils.c di top source, la seguente riga (a 3.8 beta1, è in numero di riga: 459): -

* fuori ++ = (int) ((* diff ++ * 1000 + half_total)/total_change);

Questo si traduce in: ((* diff ++ * 1000)/total_change) + 1/2 Quindi, dà sempre un numero, che è: "10 volte la percentuale, più 0.5". Quindi se la percentuale è x, restituirà 10x + 0,5.

Qualcuno può spiegare come viene calcolata questa media? o almeno qualche puntatore dove posso ottenere l'aiuto?

PS: Perché non possiamo usare solo (*diffs++/total_change) * 100 per ottenere la percentuale richiesta?

codice sorgente Top si trova a: - http://downloads.sourceforge.net/unixtop/top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0

risposta

6

Questo è il modo di fare arrotondamento per valori interi, perché la divisione scarta la parte frazionaria.

Quando si aggiunge metà del divisore, questo equivale a una divisione in virgola mobile e all'arrotondamento se la parte frazionaria è 0,5 o superiore.

+0

ma per quanto riguarda la parte "10x"? – Sabya

+0

Poiché il valore è in decimi di punto percentuale. – starblue

Problemi correlati