View Full Version : نمایش عدد اعشاری
reza6384
سه شنبه 31 شهریور 1388, 19:48 عصر
سلام.
من سوالم رو با یک کد ساده مطرح می کنم :
Dim K As Double = 1.384 - 1.383
MsgBox(K)
خروجی که داده میشه بر خلاف انتظار به جای 0.001 یک چیزی میشه مثلا 0.000999999989
و اگر هم که چند رقم اعشار باشه مثلا می نویسه
9.8899998899E-5
البته فکر کنم دلیلش به خاطر ساختار 32 بیتی یک عدد ممیز شناور باشه ، اما چرا این اتفاق توی Calculator ویندوز نمی افته؟
سوال من اینه که چجوری همون خروجی مورد انتظار رو از جمع و تفریق دو عدد اعشاری به دست بیاریم.
با تشکر
anooshiran
سه شنبه 31 شهریور 1388, 19:54 عصر
سلام دوست عزيز
Dim K As Double = CDec(1.384) - CDec(1.383)
MsgBox(K)
saadi2
سه شنبه 31 شهریور 1388, 22:16 عصر
Dim number AsDouble = 56 / 13
MsgBox(Format$(number, "###.000"))
reza6384
سه شنبه 31 شهریور 1388, 23:23 عصر
Dim K AsDouble = CDec(1.384) - CDec(1.383)
MsgBox(K)
سلام.
با تشکر از پاسخ شما ، ولی این تابع تا 4 رقم اعشار جواب میده و دقت بیشتر رو به صورت نمایش علمی نشون میده ( مثلا همون E-5 4.9 )
anooshiran
سه شنبه 31 شهریور 1388, 23:27 عصر
سلام دوست عزيز
كد زير را تست كنيد. كاملا تا هر ميزان اعشار كه باشد جواب مي دهد.
Dim K As Double = CDbl(1.3845675465465459) - CDbl(1.3833231546546565)
MsgBox(K)
reza6384
سه شنبه 31 شهریور 1388, 23:31 عصر
Dim number AsDouble = 56 / 13
MsgBox(Format$(number, "###.000"))
با جواب شما مشکلم تا حد زیادی حل شد، حالا برای اعدادی که دقتش رو نمی دونیم چقدره چکار کنیم؟ آیا باید اون بخش 000.### رو با برنامه نویسی درست کنیم تا به هر دقتی برسیم؟
reza6384
سه شنبه 31 شهریور 1388, 23:34 عصر
سلام دوست عزيز
كد زير را تست كنيد. كاملا تا هر ميزان اعشار كه باشد جواب مي دهد.
Dim K As Double = CDbl(1.3845675465465459) - CDbl(1.3833231546546565)
MsgBox(K)
آقا دستت درد نکنه ، همین الان که پست زدی به صورت داغ داغ دیدم و مشکلم کاملا حل شد.
حالا یه سوال ، این توابع رو چحوری باید شناخت؟ مثل همین CDbl و غیره که خیلی هستند و وجود دارند و بعضی وقت ها آدم کلی دنبالش می گرده.
anooshiran
چهارشنبه 01 مهر 1388, 00:04 صبح
سلام دوست عزيز
تابع cdbl از سري توابعي است كه براي تغيير بكار ميرود و مخفف change to double است.
توابعي هم خانواده هم دارد مانند csrt , cshort , cint ,cdec و ... كه از help ميتواني بدست بياوري.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.