الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في الأعداد العشريةأ

بدأه ygsetife في 23 نوفمبر 2011 · 7 رد · 937 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أبحث عن دالة أو طريقة تمكنني من الحصول على رقمين بعد الفاصلة بدون تقريب

مثال الرقم 10.996655 يكون الناتج 10.99

مشكورين مسبقا

#2

السلام عليكم.

استخدم الطريقة التالية:

Math.Truncate(10.996655 * 100) / 100
#3
Adel Khayata كتب:

السلام عليكم.

استخدم الطريقة التالية:

Math.Truncate(10.996655 * 100) / 100

lمشكور أخي

في الحقيقة لقد كنت أستخدم هده الطريقة من قبل

ولقد وقعت لي مشكلة مع الرقم 603.55 بالضبط فتكون النتيجة 603.54

وقد إكتشفت أنه يجب أن يكون المتغير من نوع DECIMAL أما أنا فقد كنت أستعمله من نوع Double

#4

جربها كالتالي:

Math.Truncate(Math.Round(10.996655 * 100)) / 100
#5

هممم، كنت اتوقع ان يكون Method جاهز في الـ .NET لهذا الغرض، لكن لم أجد!

كيف يمكن أن لا يكون لمثل هذا الأمر الشائع، أم أنا أخطأ؟

طبعا يوجد في String.

هكذا يمكن أيضا (Dirty Code ;) ):

Math.Round(10.996655 - .005, 2);

تم تعديل هذه المشاركة بواسطة موليان في 23 نوفمبر 2011 في 21:33

..:: رَبِّ زِدْني عِلْمًا ::..

#6

السلام عليكم ورحمه الله وبركاته

اخي يمكنك انشاء دالة على النحو التالي

 decimal TakeN(double d, double n)
    	{
        	return Convert.ToDecimal(d.ToString().Substring(0, d.ToString().IndexOf('.')+(int)n+1));
    	}

ومن ثم استدعاءها

MessageBox.Show(TakeN(10.946655, 2).ToString());

.:: Wish to become better and better ::.

#7

دالة أخرى بسيطة تفي بالغرض

  public static double ChoppOff(double num, int decimals)
        {
            num *= Math.Pow(10, decimals);
            num = (int)num;
            num /= Math.Pow(10, decimals);
            return num;
        }

واستخدامها على النحو التالي:

[double ChppedOffDouble = ChoppOff(603.524505, 4);

تم تعديل هذه المشاركة بواسطة Mohammed Asaad في 27 نوفمبر 2011 في 00:56

1
#8
Mohammed Asaad كتب:

دالة أخرى بسيطة تفي بالغرض

  public static double ChoppOff(double num, int decimals)
        {
            num *= Math.Pow(10, decimals);
            num = (int)num;
            num /= Math.Pow(10, decimals);
            return num;
        }

واستخدامها على النحو التالي:

[double ChppedOffDouble = ChoppOff(603.524505, 4);

مشكورين يا إخوتي على الردود الكريمة و بارك الله فيكم ورعاكم

أخوكم ياسين

مواضيع مشابهة