السلام عليكم
كيف استطيع أن أحول أي قيمة غير صحيحة إلى أقرب رقم صحيح
أمثلة:
1.1 ====> 2
أو
1.0.1====> 2
أو
1قسمة 3 = 0.3 ====> 1
أو
10 قسمة 8 = 1.25 ====> 2
وهكذ
السلام عليكم
كيف استطيع أن أحول أي قيمة غير صحيحة إلى أقرب رقم صحيح
أمثلة:
1.1 ====> 2
أو
1.0.1====> 2
أو
1قسمة 3 = 0.3 ====> 1
أو
10 قسمة 8 = 1.25 ====> 2
وهكذ
فيه موضوع عن التقريب تم وضعه من كام يوم يمكن البحث عنه والاستفادة من الأفكار الموجوده فيه ...,,,
اهلين
اذ تبغى
سواء كان اللي بعد الفاصله اكبر او اصغر من الخمسه يعطيك اللعدد اللي بعده استعمل ميثودCeiling
مثال xهو عدد integer
اكتب:
(العدد)x=Math.Ceiling
صباح الخير
وشكرا لكم
جربت الداله Ceiling
x as integer
y ,r as double
y=1.0
r=1.0
x= Ceiling(y/3,14*r*r) = 3.1847133757961783439490445859873 =3
وأنا أريدها = 4
اقتباسكيف استطيع أن أحول أي قيمة غير صحيحة إلى أقرب رقم صحيحأمثلة:
1.1 ====> 2
لكن 2 هي ليست أقرب رقم صحيح لـ 1.1 إنما 1 و إن كنت تريدين تحويل رقم يحتوي على رقم كسري إالى رقم صحيح فيجب أن يكون الرقم الكسري يساوي أو أكبر من x.5
يمكنك إستخدام CInt للتحويل لرقم صحيح:
Dim x As Double = 1.5 MessageBox.Show(CInt(x).ToString)
و النتيجة ستكون 2 و أن كانت x تساوي 1.1 فأقرب رقم صحيح هو 1
رأس الحكمة الإيمان بالله
إضافة لما تفضل به الأخوة الكرام
ممكن يكون الحل بهذه الطريقة
لإظهار نتيجة قسمة العدد الأول Number1 على العدد الثاني Number2 نستخدم التعبير هذا
Result = Nz(IIf([Number1] = 0, 0, IIf([Number2] = 0, 0, ([Number1] / [Number2]))), 0)
لتقريب نتيجة قسمة العددين السابقين الى العدد الصحيح الأعلى نستخدم التعبير هذا
SpcialRound = Nz(IIf([Result] - Int([Result]) = 0, [Result], Int([Result]) + 1), 0)
وهذا مثال بقاعدة اكسيس
محمد عبد العليم كتب:لكن 2 هي ليست أقرب رقم صحيح لـ 1.1 إنما 1 و إن كنت تريدين تحويل رقم يحتوي على رقم كسري إالى رقم صحيح فيجب أن يكون الرقم الكسري يساوي أو أكبر من x.5يمكنك إستخدام CInt للتحويل لرقم صحيح:
Dim x As Double = 1.5 MessageBox.Show(CInt(x).ToString)و النتيجة ستكون 2 و أن كانت x تساوي 1.1 فأقرب رقم صحيح هو 1
صحيح ليست أقرب صحيح ولكن ما أريده هو ما ذكرته الأخت zahrah
أقرب رقم صحيح أعلى.. أي لو كانت النتيجة : 1.1 فالرقم الأعلى = 2
ولو كانت النتيجة : 1.0.1 فالرقم الصحيح الأعلى = 2
ولو كانت النتيجة: 0.1 فالرقم الصحيح الاعلى = 1
الأخت zahrah شكرا جزيلا لك
كيف أقوم بذلك على الفييجوال بيسك دوت نت؟
تم تعديل هذه المشاركة بواسطة عابرة في 9 مايو 2007 في 21:21
اقتباسجربت الداله Ceilingx as integer
y ,r as double
y=1.0
r=1.0
x= Ceiling(y/3,14*r*r) = 3.1847133757961783439490445859873 =3
وأنا أريدها = 4
استغرب الداله ما طلعت الجواب صحيح
انا كتبت
x=math.ceiling(10/3.14*1*1)
وطلع الجواب
x=4
وجربت ببرنامج ويطلع رن صحيح
تم تعديل هذه المشاركة بواسطة a0a0a0ao في 9 مايو 2007 في 23:32
a0a0a0ao كتب:استغرب الداله ما طلعت الجواب صحيحانا كتبت
x=math.ceiling(10/3.14*1*1)
وطلع الجواب
x=4
وجربت ببرنامج ويطلع رن صحيح
نجحت
في المرة الأولى كتبت:
Dim nclusters As Integer
area =10.0
towerinfo.radius=1.0
nclusters = Ceiling(area \ (3.14 * towerinfo.radius * towerinfo.radius))
فطلعت النتيجة = 3
وفي المرة الثانية .. فصلتها:
Dim nclusters As Integer
area =10.0
towerinfo.radius=1.0
Dim r, n As Double
r = towerinfo.radius
n = 3.14
nclusters = Math.Ceiling(area / n * r * r)
فطلعت النتيجة = 4
ولو إنه مش منطقي بس مشيت :)
شكرا جزيلا لك
أختي الفاضلة عابره
يمكن استخدام هذه الوظيفة لعمل المطلوب
Public Function SpcialRound(n As Double) As Double Dim d As Double d = Val(n) If d < CInt(d) Then d = CInt(d) ElseIf (d - CInt(d)) > 0 Then d = CInt(d) + 1 End If SpcialRound = d End Function
ولنفرض ان حقل العدد الذي به الرقم العشري اسمه مثلا Result
اذا يتم استدعا ء الوظيفة بهذه الطريقة
SpcialRound (Result)
تجربة على العدد 1.01
SpcialRound(1.01)
النتيجة 2
تجربه على العدد 1.33
SpcialRound(1.33)
النتيجة 2
تجربة على العدد 1.66
SpcialRound(1.66)
النتيجة 2
تجربة على العدد 1.99
SpcialRound(1.99)
النتيجة 2
تجربة على العدد 5.00
SpcialRound(5.00)
النتيجة 5
تلاحظين انه مهما كانت قيمة الرقم العشري فإن الدالة تقوم برفع العدد الى الرقم الصحيح الأعلى
تم تعديل هذه المشاركة بواسطة zahrah في 10 مايو 2007 في 06:32
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…