أخوانى الأعزاء
أنا عندى مشكلة فى تعديل هذا الكود المرفق
لو ممكن أحد من الأخوة الأعضاء يقوم بتعديل هذا الكود ليبل التقريب إلى أقرب 5 قروش
فمثلاً لو عامل جمع 1.04 + 1 المفروض يعطى ناتج 1.05
وشكراً لمساعدتكم
أخوانى الأعزاء
أنا عندى مشكلة فى تعديل هذا الكود المرفق
لو ممكن أحد من الأخوة الأعضاء يقوم بتعديل هذا الكود ليبل التقريب إلى أقرب 5 قروش
فمثلاً لو عامل جمع 1.04 + 1 المفروض يعطى ناتج 1.05
وشكراً لمساعدتكم
أخى الغالى
راجع الرابط التالى إن شاء الله تستفيد منه كتير
تمنياتى لك وللجميع بالتوفيق
اهلا بك اخي ramynassif
و شكرا للاخ طالب علم مبتدىء
لكن رابط لا يجيب على السؤال لانه يريد التقريب الى اقرب 0.05 و ليس اقرب اعلى او اسفل
لذلك توجد هناك دالة لا يمكن تجاهلها في مثل تلك الحالة وهي "Mod"
و هي تكنب بالصيغة التالية:
x = 10 Mod 3
حيث تقوم بعملية تقسيم 10 على 3 و ترجع الباقي من القسمة
اي ان x=1
ما فائدة هذة الدالة في عملية التقريب التيى نريدها؟؟
ان دالة Mod ستفوم باعطائنا القيمة الزائدة حتى ننقصها او الناقصة حتى نزيدها .... و للتوضيح اذكر مثالين:
مثال1:
اذا كان لدينا الرقم 1.24 و نريد ان نقربه الى اقرب 0.05 اي اننا نريده ان يصبح 1.25
فالقيمة الناقصة مقدارها 0.01
و لمعرفة هذه القيمة نحتاج الى "Mod" عن طريق العمليات التالية:
1.24*100=124
x = 124 mod 5
x = 4
5 - 4 = 1
اذا كانت القيمة هي 1 او 2 نقوم بزيادتها
1+124=125
125 /100= 1.25 و هي القيمة المطلوبه
======================
مثال2:
اذا كان لدينا الرقم 1.27 و نريد ان نقربه الى اقرب 0.05 اي اننا نريده ان يصبح 1.25
فالقيمة الزائدة مقدارها 0.02
1.27*100=127
x = 127 mod 5
x =2
5 - 2 = 3
اذا كانت القيمة هي 3 او 4 نقوم بانقاص الفرق من خمسة
اي 5 - 3 = 2
127-2=125
125 /100 = 1.25 و هي القيمة المطلوبه
بعد هذا الشرج المفصل هذا هو كود ال module المطلوب:
Function MyRound(x As Double) As Double
Dim y As Double
Dim z As Double
y = 5 - ((x * 100) Mod 5)
z = (x * 100) Mod 5
If y = 1 Or y = 2 Then
MyRound = ((x * 100) + y) / 100
Else
MyRound = ((x * 100) - z) / 100
End If
End Functionتقبلوا تحياتي
ملاحظه: هذا ال Module يستخدم عند زقمين بعد الفاصلة العشرية
في حال وجود 3 ارقام يتم القسمة على 1000 , 4 يتم القسمة على 10000 و هكذا
تم تعديل هذه المشاركة بواسطة اياد دهشان في 6 يناير 2011 في 10:43
سوريا .. لك السلام

السلام عليكم ,,,
ألف شكر أخي المبدع إياد ...
ولكن أعتقد أنك ارفقت الملف الخاطئ ... :lol:
شكرا اخي ايمن على التنبيه
من كثره الامثلة ضعت :P
تم ارفاق المثال الصحيح مرة اخرى
سوريا .. لك السلام

اخي اياد
اقف احتراما وتقديرا لما تقدمه من شرح وتفصيل دقيق...
بارك الله في جهودك والى الامام
وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ
أخى اياد :clapping:
بارك الله فيك وجزاك الله كل خير شرح وافى وكافى
والجميع شهد لك بالنشاط فى المنتدى
تستاهل اكتر من +1 بس المسموح 1
تقبل تحياتى وتمنياتى لك وللجميع بالتوفيق
أخى العزيز اياد دهشان
ألف شكر ودايماً أتمنى لك مزيد من الإبداعات