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

كيف يمكن تحويل قيمة من عدد عشري إلى أقرب عدد صحيح حتى لو كان أقل من خمسة

مغلق
بدأه عابرة في 8 مايو 2007 · 9 رد · 19,193 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

كيف استطيع أن أحول أي قيمة غير صحيحة إلى أقرب رقم صحيح

أمثلة:

1.1 ====> 2

أو

1.0.1====> 2

أو

1قسمة 3 = 0.3 ====> 1

أو

10 قسمة 8 = 1.25 ====> 2

وهكذ

#2

فيه موضوع عن التقريب تم وضعه من كام يوم يمكن البحث عنه والاستفادة من الأفكار الموجوده فيه ...,,,

#3

اهلين

اذ تبغى

سواء كان اللي بعد الفاصله اكبر او اصغر من الخمسه يعطيك اللعدد اللي بعده استعمل ميثودCeiling

مثال xهو عدد integer

اكتب:

(العدد)x=Math.Ceiling

#4

صباح الخير

وشكرا لكم

جربت الداله 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

#5
اقتباس
كيف استطيع أن أحول أي قيمة غير صحيحة إلى أقرب رقم صحيح

أمثلة:

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

رأس الحكمة الإيمان بالله

#6

إضافة لما تفضل به الأخوة الكرام

ممكن يكون الحل بهذه الطريقة

لإظهار نتيجة قسمة العدد الأول 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)

وهذا مثال بقاعدة اكسيس

RoundUpNumber.rar

#7
محمد عبد العليم كتب:
لكن 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

#8
اقتباس
جربت الداله 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

استغرب الداله ما طلعت الجواب صحيح

انا كتبت

x=math.ceiling(10/3.14*1*1)

وطلع الجواب

x=4

وجربت ببرنامج ويطلع رن صحيح

تم تعديل هذه المشاركة بواسطة a0a0a0ao في 9 مايو 2007 في 23:32

#9
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

ولو إنه مش منطقي بس مشيت :)

شكرا جزيلا لك

#10

أختي الفاضلة عابره

يمكن استخدام هذه الوظيفة لعمل المطلوب

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

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…