اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

السلام عليكم

توجد مشكلة في الدالة Cint لجبر الكسور

فعندما تكون قيمة الكسر تساوي (50) فإن الدالة لا تجبره للرقم الأعلى

والمطلوب أن يتم جبر قيمة الكسر (50) للرقم الأعلى

ولكم الشكر مقدماً

_________50.rar

  • 3 months later...
قام بنشر (معدل)

السلام عليكم

أخواني الكرام

لقد لاحظت مشكلة خطييييييييررررررة في دوال الجبر

فحوالي منذ ثلاث ساعات جالسة على الكمبوتر اراجع الدوال ولم أحصل على دالة جبر تعمل بشكل سليم وصحيح

مشكلة الدالة Cint أنها تقوم بجبر الكسور للأعلى عندما يكون الرقم العشري يساوي أو يتعدى العدد ( 0.50 ) وذلك للأرقام الصحيحة الفردية فقط دون الزوجية !!!! فإذا كان الرقم الصحيح زوجي فإنها لا تجبر الكسر ( 0.50 ) بل تضع الرقم الصحيح الزوجي نفسه !!

بينما الدالة Int صحيح تقوم بجبر الكسر ( 0.50 ) وسواء كانت الأرقام الصحيحة فردية أو زوجية لا تفرق

لكنها في نفس الوقت تجبر جميع الكسور حتى تلك التي أقل من ( 0.50 ) !!

وتقريباً أغلب من يبحث عن دوال جبرية لا يريدها ان تجبر الأقل من ( 0.50 )

فهل بالإمكان تجاوز مشاكل هذه الدوال ؟

ملاحظة لمشرفي أوفيسنا :

يا حبذا لو يتم تجميع مواضيع الدوال في موضوع فهرسي

ولكم جزيل الشكر :rol:

Cint___Fix___Int.rar

تم تعديل بواسطه نرجس الورد
قام بنشر (معدل)

السلام عليكم

بعد عناء ليس بقصير توصلت للحل بفضل الأخت زهرة

حيث وجدت لها مثال في الفريق العربي ولتعذرنا بنقل وتغيير بسيط في مثالها الرائع موصول لها الشكر الجزيل

المثال الأول هو الأصل بدون تعديل

والمثال الثاني نفسه ولكن قمت بتغيير العدد (0.5) في الوحدة النمطية إلى العدد (0.49) واستطعت الحصول على ما أريده

جزاكم الله جميعاً ألف خير وحقق لكم أحلامكم

Round_UP_Down.rar

Round_UP_Down2.rar

تم تعديل بواسطه نرجس الورد
قام بنشر (معدل)

بقيت مشكلة لم أعرف كيف يتم حفظ ناتج التقريب في الجدول

جربت تطبيق الدالة في الاستعلام فنجحت

شكرااااااااا للجميع :fff:

تم تعديل بواسطه نرجس الورد
قام بنشر

دالة لـ أبو هادي :
دالة RoundUp, بديلة لدالة Round

كود
Function RoundUp(ByVal Expression, _
       Optional ByVal NumDecimalPlaces = 0) As Double
Dim Rnd

On Error Resume Next

If NumDecimalPlaces < 0 Then NumDecimalPlaces = 0
If NumDecimalPlaces > 22 Then NumDecimalPlaces = 22

Rnd = 0
If Expression <> 0 Then
   Rnd = Val("0." & String(NumDecimalPlaces + 1, "0") & "1")
End If

RoundUp = Round(Expression + IIf(Expression > 0, Rnd, -Rnd), _
                 NumDecimalPlaces)
End Function
وهذا اختبار للدالة ومقارنتها مع ثلاث دوال أخرى :
كود
Sub RoundingTest()
  Dim Num As Double
  
  Num = 0.5
  
  MsgBox CInt(Num) & vbNewLine & _
         CLng(Num) & vbNewLine & _
         Round(Num) & vbNewLine & _
         RoundUp(Num)
End Sub

  • 5 months later...
قام بنشر

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

أتقدم بالشكر الجزيل والحب الكبير لهذا المنتدى الرائع بل الأكثر من رائع أسأل الله العلي القدير لكم التوفيق

وأن يجعلكم من أهل جنات النعيم والفردوس الاعلى يا رب العالمين

  • 5 years later...

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information