PDA

View Full Version : متغیر از نوع Decimal



khepelesibilo
یک شنبه 09 دی 1386, 16:57 عصر
انجمن رو جستجو کردم اما توو کلماتی که من جستجو کردم جوابی برای این سوال ندیدم، MSDN‌ رو تا جایی که تونستم گشتم اما جواب این سوال رو پیدا نکردم!‌ شاید من خوب نگشته باشم :

متغیری با نوع Decimal توو زبانهای net. وجود داره که بارز ترین مشخصه اش وجود تعداد ارقام با معنی زیاد (27-28 رقم ) هست

حتی جایی نکیه جالبی دیدم! توو تمام زبانها صادقه اما من مثال vb رو می نوسیم :

Dim d AsDouble = 1.0003
Dim sum AsDouble = 0
Dim i AsInteger
For i = 1 To 1000
sum = sum + d
Next
textbox1.text = sum

جواب برنامه بالا به شکل زیر خواهد بود!‌:
1000.30000000002

اما اگر متغیر از نوع decimal تعریف بشه! این مشکل حل میشه!


اما استفاده از این متغیر در حالت عادی به این راحتی نیست! یعنی استفاده از اون به شکل زیر فقط شامل 14-15 رقم با مفهوم میشه
Dim d AsDecimal
d = 10 / 3
TextBox1.Text = d
جواب :
3.33333333333333

و اون رو باید به این شکل نوشت :
Dim d AsDecimal
d = 10D / 3
TextBox1.Text = d
که جوابی به شکل زیر میده :
3.3333333333333333333333333333

به عبارتی برای اینکه نشون بدیم عدد باید با ارقام زیاد باشه، باید جلوی مقدار دهی به اون از حرف D استفاده (d = 10D / 3) کنیم

اما این موضوع وقتی برنامه ای بزرگ می نویسیم مشکل ساز میشه ، به فرض برنامه ای نوشتم برای محاسبه ماتریس های مختلط اما می خواستم ارقام اعشار اون بالای 25 تا باشه که متاسفانه در جاهای مختلف مشکلات زیادی برام به وجود آورد!

سوال من اینه که آیا راهی هست که به طور پیشفرض به سیستم بگیم همه decimal هارو از نوع 27 رقمی به صورت پیشفرض بدون نیاز به حرف D در نظر بگیره ؟

khepelesibilo
دوشنبه 10 دی 1386, 16:33 عصر
جوابی که بالاخره خودم پیدا کردم :

به جای علامتهای ضرب و تقسیم و ... از عملگرهای تعریف شده خوده Decimal باید استفاده کرد یعنی به جای :


Dim a AsDecimal
a = 10 / 3


باید بنویسیم :


Dim a AsDecimal
a = Decimal.Divide(10, 3)