Domanda

Sto cercando di usare GNU coreutil formula di top per il calcolo usi CPU in percentuale. Ma in alto sta usando qualche half_total, per calcolare la percentuale, che è l'aggiunta di 0,5 alla percentuale.

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

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

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

Qualcuno può spiegare come è questo media calcolata? o almeno alcuni puntatore dove posso ottenere l'aiuto?

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

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

È stato utile?

Soluzione

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

Quando si aggiunge metà il divisore questo è equivalente ad una divisione in virgola mobile e per eccesso se la parte frazionaria è di 0,5 o maggiore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top