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

[ تمت الإجابة ]كود التقريب

بدأه ramynassif في 5 يناير 2011 · 8 رد · 1,483 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أخوانى الأعزاء

أنا عندى مشكلة فى تعديل هذا الكود المرفق

لو ممكن أحد من الأخوة الأعضاء يقوم بتعديل هذا الكود ليبل التقريب إلى أقرب 5 قروش

فمثلاً لو عامل جمع 1.04 + 1 المفروض يعطى ناتج 1.05

وشكراً لمساعدتكم

كود التقريب.rar

#3

اهلا بك اخي 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 و هكذا

Round By MOD.zip

تم تعديل هذه المشاركة بواسطة اياد دهشان في 6 يناير 2011 في 10:43

3
#4

السلام عليكم ,,,

ألف شكر أخي المبدع إياد ...

ولكن أعتقد أنك ارفقت الملف الخاطئ ... :lol:

#6

اخي اياد

اقف احتراما وتقديرا لما تقدمه من شرح وتفصيل دقيق...

بارك الله في جهودك والى الامام

1

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#7

أخى اياد :clapping:

بارك الله فيك وجزاك الله كل خير شرح وافى وكافى

والجميع شهد لك بالنشاط فى المنتدى

تستاهل اكتر من +1 بس المسموح 1

تقبل تحياتى وتمنياتى لك وللجميع بالتوفيق

1
#8

أخى العزيز اياد دهشان

ألف شكر ودايماً أتمنى لك مزيد من الإبداعات

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