سؤال

أحاول استخدام صيغة GNU Coreutil Top لحساب CPU Insages في النسبة المئوية. ولكن أعلى يستخدم حوالي half_total، لحساب النسبة المئوية، والتي تضيف 0.5 إلى النسبة المئوية.

في utils.c من الأعلى مصدر, ، الخط التالي (عند 3.8 Beta1، هو رقم الخط: 459):

* خارج ++ = (int) ((* diffs ++ * 1000 + half_total) / total_change)؛

هذا يترجم إلى: ((* diffs ++ * 1000) / total_change) + 1/2 لذلك، فإنه دائما يعطي رقما، وهو: "10 أضعاف النسبة المئوية، بالإضافة إلى 0.5". لذلك إذا كانت النسبة المئوية X، فسيعود 10x + 0.5.

هل يمكن لأي شخص أن يفسر كيف يتم حساب هذا المتوسط؟ أو على الأقل بعض المؤشر حيث يمكنني الحصول على المساعدة؟

ملاحظة: لماذا لا يمكننا فقط استخدام (*diffs++/total_change) * 100 للحصول على النسبة المئوية المطلوبة؟

يوجد رمز المصدر الأعلى في: -http://downloads.sourceforge.net/unixtop/top-3.8beta1.tar.gz؟modtime=121017842&big_mirror=0.

هل كانت مفيدة؟

المحلول

هذه هي الطريقة للقيام بها جولة بالنسبة للقيم الصحيحة، لأن الانقسام يتجاهل الجزء الكسري.

عند إضافة نصف مقسم، هذا يعادل تقسيم نقطة عائمة وإعادة التقريب إذا كان الجزء الكسري هو 0.5 أو أكبر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top