امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
!35 ؟؟؟؟
نویسنده پیام
sh_teta آفلاین
كاربر دو ستاره
**

ارسال‌ها: 113
موضوع‌ها: 38
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 0
( 3 تشکر در 1 ارسال )
ارسال: #1
!35 ؟؟؟؟
به اين كد نگاه كنيد

dim x as double

x=1
for i = 1 to 35
x=x*i
next i
msgbox x

ايا ميشه كاري كرد كه جواب دقيق اين كد يعني 35 فاكتوريل رو حساب كرد؟

Shy
۳۰-آبان-۱۳۸۵, ۲۱:۱۶:۳۶
ارسال‌ها
پاسخ
shamsoft آفلاین
كاربر دو ستاره
**

ارسال‌ها: 152
موضوع‌ها: 32
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 0
( 7 تشکر در 6 ارسال )
ارسال: #2
RE: !35  ؟؟؟؟
for i=2 to 35
اينو بزاري درست ميشه
۳۰-آبان-۱۳۸۵, ۲۱:۴۱:۲۱
وب سایت ارسال‌ها
پاسخ
sh_teta آفلاین
كاربر دو ستاره
**

ارسال‌ها: 113
موضوع‌ها: 38
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 0
( 3 تشکر در 1 ارسال )
ارسال: #3
RE: !35  ؟؟؟؟
من ميگم جواب ميده ولي اينجوري 1.03331479663861E+40
من مي خام دقيق دقيق بده
۳۰-آبان-۱۳۸۵, ۲۳:۰۶:۱۰
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #4
RE: !35  ؟؟؟؟
متاسفانه باید بگم نمیشه ! در وی بی این بزرگترین نوع متغیر هست و در واقع تعداد بیت های بخش Mantissa در نوع Double محدود هست ( 52 بیت + 1 بیت ثابت که همیشه 1 هست ) لینک زیر عدد Double precision رو معرفی می کنه ( طبق استاندارد IEEE )

http://en.wikipedia.org/wiki/Double_precision

یک عدد از نوع Double precision بیشتر از این دقت نمایش نداره ! پس قابلیت نمایش دادن دقیق یک عدد بسیار بسیار بزرگی مثل فکتوریل 35 با همچین متغیری قابل انجام دادن نیست .
معمولا هیچ کدوم از نوع های موجود در زبان های سطح بالا قابلیت نمایش دقیق اعدادی به این بزرگی رو ندارند . اگه به همچین چیزی نیاز دارید باید از زبان سطح پایینی مثل اسمبلی کمک بگیری که محدود به داده ها و انواع اونها نیست . شما از کل حافظه میتونی استفاده کنی و یک عدد رو میتونی دقیق محاسبه کنی .


گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
(آخرین ویرایش در این ارسال: ۰۱-آذر-۱۳۸۵, ۰۱:۱۶:۰۷، توسط Mamad2003.)
۰۱-آذر-۱۳۸۵, ۰۱:۱۵:۰۲
ارسال‌ها
پاسخ
ashkan آفلاین
بنيانگذار سايت
******

ارسال‌ها: 1,553
موضوع‌ها: 80
تاریخ عضویت: آبان ۱۳۸۲

تشکرها : 0
( 140 تشکر در 87 ارسال )
ارسال: #5
RE: !35  ؟؟؟؟
شما میتونی با شبیه سازی عمل ضرب(که خیلی کار بر هست) و گرفتن یه آرایه بجای محل خاص حافظه این کارو انجام بدی .
شبیه سازی رو میشه اینطوری انجام داد. مثلا ضرب عددهای 4259*3652 رو میشه اینطوری انجام داد
3652=3*1000+6*100+5*10+2
اینطوری عدد رو بجای چند رقمی میکنی تک رقمی (و عملی مثل 3*1000 رومیشه اینطوری گفت یه سه و ستا صفر جلوش)
بقیش با خودت.

آشنایی با نظریه زبان باعث شد تا بفهمم کامپیوتر اونی نیست که من میدونم.
۰۱-آذر-۱۳۸۵, ۰۸:۲۷:۱۵
وب سایت ارسال‌ها
پاسخ


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS