سؤال

وعن طريق C #، أريد أن تنسيق عشري إلى عرض فقط منزلتين عشريتين وبعد ذلك سوف تأخذ هذه العشرية وتطرحه إلى عشري آخر. وأود أن تكون قادرة على القيام بذلك دون الحاجة لتحويلها إلى سلسلة أولا تهيئة ومن ثم تحويله مرة أخرى إلى عشري. أنا آسف نسيت لتحديد ذلك ولكن لا أريد لجولة، أريد فقط أن يقطع العشرية الماضية. هل هناك طريقة للقيام بذلك؟

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

المحلول

إذا كنت لا تريد تقريبه عشري، يمكنك استخدام Decimal.Truncate. لسوء الحظ، فإنه يمكن اقتطاع فقط ALL من الكسور العشرية. لحل هذه المشكلة، هل يمكن أن تتضاعف بنسبة 100، اقتطاع والقسمة على 100، مثل هذا:

decimal d = ...;
d = Decimal.Truncate(d * 100) / 100;

ويمكنك إنشاء طريقة تمديد إذا كنت تفعل ذلك مرات كافية

public static class DecimalExtensions
{
  public static decimal TruncateDecimal(this decimal @this, int places)
  {
    int multipler = (int)Math.Pow(10, places);
    return Decimal.Truncate(@this * multipler) / multipler;
  }
}

نصائح أخرى

ويمكنك استخدام: Math.Round(number,2); تقريب عدد إلى منزلتين عشريتين

.

هذا الزائد معين من Math.Round للحصول على أمثلة.

وأنت لا تريد تنسيق عليه ذلك الحين، ولكن لتقريب ذلك. جرب وظيفة Math.Round.

ونلقي نظرة على Math.Round

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