البرمجة

تقريب الأعداد العشرية إلى أعداد صحيحة

It looks like you’re dealing with rounding issues in C# when converting decimal values to integers, particularly for percentages. Your approach of using Math.Round and Convert.ToInt32 with MidpointRounding.AwayFromZero is a valid one, but you’re right that it can be a bit cumbersome and less readable, especially when dealing with percentages.

One cleaner approach could be to encapsulate the rounding logic in a separate method, rather than using an extension method directly on decimal. Here’s an example:

csharp
public static class PercentageHelper { public static int RoundPercentage(decimal value, int count, int decimals) { decimal roundedValue = Math.Round(Math.Round(value * 100, decimals, MidpointRounding.AwayFromZero), MidpointRounding.AwayFromZero); return Convert.ToInt32(roundedValue / count); } }

With this approach, you can call PercentageHelper.RoundPercentage whenever you need to round a percentage value to an integer, improving readability and maintainability. Here’s how you would use it:

csharp
int currentScore = PercentageHelper.RoundPercentage(TotalScore, TotalCount, 2);

This keeps the rounding logic separate from your business logic and makes it easier to understand the purpose of the rounding operation.

المزيد من المعلومات

بالتأكيد، هنا بعض المعلومات الإضافية التي قد تكون مفيدة:

  1. استخدام Math.Round مع MidpointRounding.AwayFromZero: هذا الاستخدام يقرب القيم من الصفر بشكل صحيح، وهو مفيد لتجنب مشاكل التقريب الناتجة عن استخدام Convert.ToInt32 الذي يستخدم Math.Truncate والذي يميل إلى قص الأرقام بدلاً من تقريبها.

  2. استخدام Convert.ToInt32 بعد التقريب: يضمن هذا النهج أن النتيجة النهائية هي عدد صحيح، مما يتوافق مع متطلبات التطبيق التي تتطلب النسب كأعداد صحيحة وليس كأعداد عشرية.

  3. كتابة واستخدام Extension Method: استخدمت هذه الطريقة لجعل الكود أكثر إتقانًا وإعادة استخدامًا، ولكنك تشعر بأنها تزيد من التعقيد. من الجيد البحث عن توازن بين الإتقان والبساطة في الكود.

  4. استخدام كائن Helper: بدلاً من كتابة Extension Method، يمكنك استخدام كائن Helper لتجميع وتنظيم الوظائف المساعدة الخاصة بالتقريب والتحويل. هذا يجعل الكود أقل تعقيدًا وأكثر قابلية للصيانة.

  5. التحقق من قيمة TotalCount: في الدالة CurrentScore، يجب التحقق من قيمة TotalCount لتجنب حدوث خطأ قسمة على صفر.

  6. توثيق الكود: من المهم دائمًا توثيق الكود بشكل جيد لتوضيح الغرض والسياق والطريقة التي تم بها كتابة الكود.

هذه النصائح يمكن أن تساعد في تحسين الكود وجعله أكثر قابلية للصيانة والفهم في المستقبل.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر