بوابة الثانوية العامة المصرية

بوابة الثانوية العامة المصرية (https://www.thanwya.com/vb/index.php)
-   أرشيف المنتدى (https://www.thanwya.com/vb/forumdisplay.php?f=513)
-   -   الكلام الجميل لعدم الحيرة في التحويل (https://www.thanwya.com/vb/showthread.php?t=193241)

سيف سالم 11-03-2010 07:50 PM

الكلام الجميل لعدم الحيرة في التحويل
 
ان عملية التحويل بين الانواع المختلفة قد شغل الجميع
وقد احتار الكل
كيف لا يمكن التحويل من double و single الى decimal بالرغم من ان الاخير هو الاكبر 16 خانة

لازالة الحيرة

التحويل المباشر و الغير مباشر


widening conversion

narrowing conversion

implicit conversion

explicit conversion

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

وطبعا الترجمة

الواسع

الضيق

الضمني

الصريح

ان كتاب المدرسة قد خلط بين الكلمات
كيف ؟ سنوضح ذلك

بالرجوع الةى msdn
وجد الاتي

A widening conversion changes a value to a data type that can accommodate any possible value of the original data.


A narrowing conversion changes a value to a data type that might not be able to hold some of the possible values.

An implicit conversion does not require any special syntax in the source code. In the following example, Visual Basic implicitly converts the value of k to a single-precision floating-point value before assigning it to q.

Dim k As Integer
Dim q As Double
' Integer widens to Double, so you can do this with Option Strict On.
k = 432
q = K



An explicit conversion uses a type conversion keyword. Visual Basic provides several such keywords, which coerce an expression in parentheses to the desired data type. These keywords act like functions, but the compiler generates the code inline, so execution is slightly faster than with a function call.


مما سبق نلاحظ ان

التحويل ليس بين الانواع
ولكن بين القيم

كما ان المباشر هو من لا يحتاج الى كلمات او دوال
والغير مباشر هو الذي يعتمد على كلمات ودوال للتحويل


بالرجول الي القيم نجد ان اكبر القيم هي قيم double

For +ve values approximately 4.9*10-324
to
1.8*(10)
+308
For -ve values approximately -1.8*10+308
to -
4.9*(10)
-324
And 0

ويليها في الصغر single

For +ve values approximately1.4*(10)
-45
to
3.4*(10)
+38
For -ve values approximately -3.4*(10)
+38
to
1.4*(10)
-45
And 0

ثم decimal

ثم long ثم integer ثم short

وعليه الحيرة ان كتاب المدرسي قد ذكر ان التحويل بين الانواع

والحقيقة انه بين القيم التى يمكن تخزينها في تلك الانواع


mohamed_salem 11-03-2010 08:10 PM

شكرا ياباشا انت شرف لنا بارك اله فيكم

محمد عبد الحكم 11-03-2010 08:13 PM

كل التحية والتقدير للقائد سيف باشا سالم :078111rg3: اكبر موسوعه علمية بالمنتدي

سليم سلامة 11-03-2010 09:52 PM

بارك الله فيك

Mr. Medhat Salah 11-03-2010 10:17 PM

جزاك الله خيرا

سليم سلامة 11-03-2010 10:30 PM

اقتباس:

المشاركة الأصلية كتبت بواسطة سيف سالم (المشاركة 2041431)
ان عملية التحويل بين الانواع المختلفة قد شغل الجميع
وقد احتار الكل
كيف لا يمكن التحويل من double و single الى decimal بالرغم من ان الاخير هو الاكبر 16 خانة

لازالة الحيرة

التحويل المباشر و الغير مباشر


widening conversion

narrowing conversion

implicit conversion

explicit conversion

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

وطبعا الترجمة

الواسع

الضيق

الضمني

الصريح

ان كتاب المدرسة قد خلط بين الكلمات
كيف ؟ سنوضح ذلك

بالرجوع الةى msdn
وجد الاتي

A widening conversion changes a value to a data type that can accommodate any possible value of the original data.


A narrowing conversion changes a value to a data type that might not be able to hold some of the possible values.

An implicit conversion does not require any special syntax in the source code. In the following example, Visual Basic implicitly converts the value of k to a single-precision floating-point value before assigning it to q.

Dim k As Integer
Dim q As Double
' Integer widens to Double, so you can do this with Option Strict On.
k = 432
q = K



An explicit conversion uses a type conversion keyword. Visual Basic provides several such keywords, which coerce an expression in parentheses to the desired data type. These keywords act like functions, but the compiler generates the code inline, so execution is slightly faster than with a function call.


مما سبق نلاحظ ان

التحويل ليس بين الانواع
ولكن بين القيم

كما ان المباشر هو من لا يحتاج الى كلمات او دوال
والغير مباشر هو الذي يعتمد على كلمات ودوال للتحويل


بالرجول الي القيم نجد ان اكبر القيم هي قيم double

For +ve values approximately 4.9*10-324
to
1.8*(10)
+308
For -ve values approximately -1.8*10+308
to -
4.9*(10)
-324
And 0

ويليها في الصغر single

For +ve values approximately1.4*(10)
-45
to
3.4*(10)
+38
For -ve values approximately -3.4*(10)
+38
to
1.4*(10)
-45
And 0

ثم decimal

ثم long ثم integer ثم short

وعليه الحيرة ان كتاب المدرسي قد ذكر ان التحويل بين الانواع
والحقيقة انه بين القيم التى يمكن تخزينها في تلك الانواع

جزاكم الله خيرا ولكن لي ملاحظة
كيف لا يمكن التحويل من double و single الى decimal بالرغم من ان الاخير هو الاكبر 16 خانة
حضرتك تقصد 16 Byte وأيضا 29 خانة

سيف سالم 12-03-2010 06:05 PM

اقتباس:

المشاركة الأصلية كتبت بواسطة سليم سلامة (المشاركة 2041827)
جزاكم الله خيرا ولكن لي ملاحظة
كيف لا يمكن التحويل من double و single الى decimal بالرغم من ان الاخير هو الاكبر 16 خانة
حضرتك تقصد 16 Byte وأيضا 29 خانة

التحويل ليس من duble الى decimal او العكس
ولكن التحويل بين القيمة التى تخزن في double هذه القيمة لا يمكن تحويلها مباشرة لتخزن في decimal
لان القيمة التي يمكن تخزينها في double


For +ve values approximately 4.9*10-324
to
1.8*(10)
+308
For -ve values approximately -1.8*10+308
to -
4.9*(10)
-324
And 0


هذه القيمة اكبر بكثير
من القيمة التي تخزن في decimal والتي هي79228162514264337593543950335 سالب وموجب


والكبير لا يمكن تحويله للصغير اللا بالطرق غير مباشرة

سليم سلامة 12-03-2010 09:59 PM

اقتباس:

المشاركة الأصلية كتبت بواسطة سيف سالم (المشاركة 2043631)
التحويل ليس من duble الى decimal او العكس

ولكن التحويل بين القيمة التى تخزن في double هذه القيمة لا يمكن تحويلها مباشرة لتخزن في decimal
لان القيمة التي يمكن تخزينها في double


For +ve values approximately 4.9*10-324
to
1.8*(10)
+308
For -ve values approximately -1.8*10+308
to -
4.9*(10)
-324
And 0


هذه القيمة اكبر بكثير
من القيمة التي تخزن في decimal والتي هي79228162514264337593543950335 سالب وموجب


والكبير لا يمكن تحويله للصغير اللا بالطرق غير مباشرة

بارك الله فيك

خالد سعد شومان 13-03-2010 12:30 AM

أولا مشكور جداً على المجهود الطيب والعلم الغزير الذي نتعلم منه جميعا.
لاكن يبقى سؤال كيف يتم تخزين هذه القيم في النوع double والدقة المسموح بها هي 15 خانة , في حين أن المدي المذكور يذيد عن الـ 15 خانة . كيف التوفيق بين المدى والقه سواء لهذا النوع أو النوع single ?
مع ملاحظة عدم وجود هذه المشكلة مع النوع decimal

ممدوح مصطفى الانصارى 13-03-2010 12:35 AM

جزاكم الله خيرا
زميلى الكريم
الاستاذ / سيف سالم
زادكم الله من فضله وخالص الدعوات
http://abeermahmoud.jeeran.com/342-jzaaka.gif

kinghero 13-03-2010 10:08 AM

الف مليون شكر يا استاذ سيف قد فهمت ماذا تقصد وشكرا علي التوضيح الجميل بارك الله فيك

tarek elhamy 13-03-2010 02:00 PM

شكرا علي التوضيح الجميل بارك الله فيك

سيف سالم 13-03-2010 04:10 PM

اقتباس:

المشاركة الأصلية كتبت بواسطة خالد سعد شومان (المشاركة 2044625)
أولا مشكور جداً على المجهود الطيب والعلم الغزير الذي نتعلم منه جميعا.
لاكن يبقى سؤال كيف يتم تخزين هذه القيم في النوع double والدقة المسموح بها هي 15 خانة , في حين أن المدي المذكور يذيد عن الـ 15 خانة . كيف التوفيق بين المدى والقه سواء لهذا النوع أو النوع single ?
مع ملاحظة عدم وجود هذه المشكلة مع النوع decimal

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

http://www.thanwya.com/vb/showthread.php?t=191437

سيف سالم 13-03-2010 04:12 PM

اقتباس:

المشاركة الأصلية كتبت بواسطة mohamed_salem (المشاركة 2041452)
شكرا ياباشا انت شرف لنا بارك اله فيكم

بارك الله لكم

سيف سالم 13-03-2010 04:12 PM

اقتباس:

المشاركة الأصلية كتبت بواسطة محمد عبد الحكم (المشاركة 2041457)
كل التحية والتقدير للقائد سيف باشا سالم :078111rg3: اكبر موسوعه علمية بالمنتدي

بارك الله لكم


جميع الأوقات بتوقيت GMT +2. الساعة الآن 07:50 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.