PDA

View Full Version : سوال: دقت اعداد



MP.C-Writer
دوشنبه 12 دی 1390, 19:56 عصر
سلام دوستان. برای این که ویژوال بیسیک خودش اعداد رو به صورت نماد علمی ننویسه باید چی کار کرد؟ مثلا وقتی یه عدد 20 رقمی رو توی یک متغیر دابل ذخیره می کنم و بعد ازش استفاده می کنم به این صورت می شه:
Dim a as double
a=123456789123456789
print a

بعدش جواب این طوری می شه: 1.23456789123457E+17 که 211 تا با عدد اصلی اختلاف داره. حتی وقتی توی یه رشته ذخیره می کنم، وقتی می خوام برگردونم بازم همین طور میشه.

Veteran
دوشنبه 12 دی 1390, 20:13 عصر
کلا همون موقعه ای که عدد رو مینوسی موقعه ای که داری به متغیر مقدار زیادی میدی مثلا همین عددی که شما دادی
به 1.23456789123457E+17 تبدیل میشه البته اگر متغیر عددی باشه
اما رشته باشه من تست کردم مشکلی نداشت

Dim a As String
a = "123456789123456789"
Print a

MP.C-Writer
دوشنبه 12 دی 1390, 22:34 عصر
درسته. برای چاپ رشته مشکلی نداره. ولی من می خوام با این عدد کار انجام بدم. نمی خوام که فقط چاپش کنم. مجبورم از حالت رشته درش بیارم. به محض این که از حالت رشته بیرون میاد خراب می شه

vbhamed
سه شنبه 13 دی 1390, 07:07 صبح
سلام

اينكار ممكن نيست، البته رنج 922,337,203,685,477- تا 922,337,203,685,477 با متغير نوع Currency پشتيباني ميشه كه براي بيشتر كارها كافي هست، ولي براي بيشترش شما بايد خودتون از الگوريتمهاي محاسبات عددي بر مبناي رشته استفاده كنيد، مثلا جمع و ضرب رشته اي، نمونه تو سايت هست