Вопрос

Я пытаюсь использовать формулу GNU coreutil top для расчета использования процессора в процентах.Но top использует некоторый half_total для вычисления процента, который добавляет 0,5 к проценту.

В utils.c топа источник, следующая строка (в версии 3.8 beta1 она имеет номер строки:459):-

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

Это переводится как:(( * diffs ++ * 1000) / total_change)+ 1/2 Итак, он всегда дает число, которое:«10-кратный процент плюс 0,5».Таким образом, если процент равен x, он вернет 10x+0,5.

Кто-нибудь может объяснить, как рассчитывается это среднее значение?или хотя бы какой-нибудь указатель, где я могу получить помощь?

ПС:Почему мы не можем просто использовать (*diffs++/total_change) * 100 чтобы получить необходимый процент?

Исходный код Top находится по адресу:-http://downloads.sourceforge.net/unixtop/top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0

Это было полезно?

Решение

Это способ сделать округление для целых значений, поскольку при делении отбрасывается дробная часть.

Когда вы добавляете половину делителя, это эквивалентно делению с плавающей запятой и округлению в большую сторону, если дробная часть равна 0,5 или больше.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top