我想使用GNU coreutil顶部的公式以百分比计算CPU占用率。 但顶部使用一些half_total,来计算的百分比,这是添加0.5〜百分比。

在顶部的源的utils.c ,以下行(在3.8β1,它是在行号:459): -

*总分++ =(int)的((* diff文件++ * 1000 + half_total)/ total_change);

此转换为: ((* diff文件++ * 1000)/ total_change)+ 1/2 因此,它总是给一个数字,它是:“率在10倍,再加上0.5”。因此,如果百分比为x,它会返回10X + 0.5。

谁能解释这平均是如何计算的?或至少一些指针在那里我能得到的帮助?

PS: 为什么我们不能只使用(*diffs++/total_change) * 100来获得所需的百分比是多少?

顶的源代码位于: - http://downloads.sourceforge.net/unixtop /top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0

有帮助吗?

解决方案

这是做的舍入内的整数值的方式,这是因为除法丢弃的小数部分。

在添加一半的除数这相当于一个浮点除法和舍入如果小数部分为0.5或更大。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top