2009-02-16 19 views
6

CPU kullanımlarını yüzde olarak hesaplamak için GNU coreutil top formülü kullanmaya çalışıyorum. Ancak, üst yüzde, yüzde yüzdesini ekleyen yüzdesini hesaplamak için bazı half_total kullanıyor. En en source arasında utils.c olaraküst komutun CPU kullanımı hesaplaması

, aşağıdaki satırı (3.8 beta1 de, bu satır numarası şöyledir: 459): -

* üzerinden ++ = (int) ((* diffs ++ x 1000 + half_total)/total_change);

Bu şöyle açıklanabilir: "10 kez yüzdesi, artı 0.5": ((* diffs ++ x 1000)/total_change) + 1/2 Yani, her zaman, bir dizi sağlar. Yani yüzde x ise, 10x + 0,5 dönecektir.

Bu ortalama nasıl hesaplandığını açıklayabilir mi? ya da en azından yardım alabileceğim bir işaretçi mi?

PS: Neden gerekli yüzdeyi almak için (*diffs++/total_change) * 100'u kullanmıyoruz? bölünme fraksiyonel bölümünü atar çünkü bu, tam sayı değerleri için yuvarlama yapmak yoludur http://downloads.sourceforge.net/unixtop/top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0

cevap

6

-:

Top'un kaynak kodu bulunmaktadır.

Bölenin yarısını eklediğinizde, bu, bir kayan nokta bölümüyle eşdeğerdir ve fraksiyonel kısım 0,5 veya daha büyükse yuvarlama olur.

+0

ama "10x" parçası ne olacak? – Sabya

+0

Çünkü değer yüzde onda. – starblue