رفتن به مطلب
  • 0

توان در b4a


smm1378

سوال

سلام دوستان .

در b4a برای محاسبه توان از کلس power استفاده میشه.

این کلس در اعداد بزرگ کار نمیکنه!

مثلا جواب  power(900,2) و power(999,2) رو یک عدد نشون میده!(از یک عددی بیشتر نشون نمیده.

برای محاسبه توان یک الگوریتم لازم داشتم.(خیلی روش فکر کردم و به یک جاهایی هم رسیدم ولی نشد!)

لطفا کمک کنید شدیدا نیازه.

پیشاپیش ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

5 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

در ۱ ساعت قبل، smm1378 گفته است :

سلام دوستان .

در b4a برای محاسبه توان از کلس power استفاده میشه.

این کلس در اعداد بزرگ کار نمیکنه!

مثلا جواب  power(900,2) و power(999,2) رو یک عدد نشون میده!(از یک عددی بیشتر نشون نمیده.

برای محاسبه توان یک الگوریتم لازم داشتم.(خیلی روش فکر کردم و به یک جاهایی هم رسیدم ولی نشد!)

لطفا کمک کنید شدیدا نیازه.

پیشاپیش ممنون

با سلام دوست عزیز 

چون حاصل توان عدد بزرگی میشه و متغیر ها محدوده دارن پس باید 

از یه متغیر عددی بزرگ استفاده کنید یعنی متغیر long

و اول حاصل رو بریزید توی متغییر بعد هر جا خواستید بزارید

اینجوری

Dim a As Long


a = power (90000 , 2)

Label1.Text = a

امتحان کنید حتما درست میشه 

موفق باشید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 50 دقیقه قبل، sbr گفته است :

با سلام دوست عزیز 

چون حاصل توان عدد بزرگی میشه و متغیر ها محدوده دارن پس باید 

از یه متغیر عددی بزرگ استفاده کنید یعنی متغیر long

و اول حاصل رو بریزید توی متغییر بعد هر جا خواستید بزارید

اینجوری


Dim a As Long


a = power (90000 , 2)

Label1.Text = a

امتحان کنید حتما درست میشه 

موفق باشید

سلام.
خیلی ممنون تا یک حدی درست شد!

الان اعداد بزرگ رو نشون میده ولی در اعداد خیلی بزرگ خنوز مشکل داره!

بزرگترین عددی که نشود میده : "9223372036854775806" هست!

نمیشه کاری کرد از این بزرگ  تر نشون بده؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 2 ساعت قبل، smm1378 گفته است :

سلام.
خیلی ممنون تا یک حدی درست شد!

الان اعداد بزرگ رو نشون میده ولی در اعداد خیلی بزرگ خنوز مشکل داره!

بزرگترین عددی که نشود میده : "9223372036854775806" هست!

نمیشه کاری کرد از این بزرگ  تر نشون بده؟

والا دیگه نمیدونم تا هرچی امتحان میکنم اصلا جواب نمیده 

با کتابخونه BigNumber هم امتحان میکنم بازم جواب بیشتر از 9223372036854775806 نمیده 

حالا واسه چیتون هست اینقدر عدد بزرگ؟؟؟؟؟؟؟؟؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

اینطور که معلومه متغیر جا نداره عدد رو توی خودش بریزه و ذخیره نگه داره.

الان شما بیاین جواب بدست اومده رو داخل یک فایل توی حافظه ذخیره کنید و دوباره اونو بازخوانی کنید، مطمئن نیستم اما شاید جواب بده.

مثال:

	File.WriteString(File.DirInternal,"tavan1", Power (90000 , 2))  'ذخیره'
	
	Msgbox(File.ReadString(File.DirInternal,"tavan1"),"javab") 'خواندن و نمایش جواب'

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 2 ساعت قبل، پژمان نیکروان گفته است :

سلام

اینطور که معلومه متغیر جا نداره عدد رو توی خودش بریزه و ذخیره نگه داره.

الان شما بیاین جواب بدست اومده رو داخل یک فایل توی حافظه ذخیره کنید و دوباره اونو بازخوانی کنید، مطمئن نیستم اما شاید جواب بده.

مثال:


	File.WriteString(File.DirInternal,"tavan1", Power (90000 , 2))  'ذخیره'
	
	Msgbox(File.ReadString(File.DirInternal,"tavan1"),"javab") 'خواندن و نمایش جواب'

 

 

ممنون از همه دوستان.

این کار تو گوشی غیر ممکن هست!

چون int دوبل 16 بیت هست پس میشه bin 1111 1111 1111 1111 پس نمیتونه بیشتر از عدد 4294967295 هست .

متغییر Long میاد محاسبه رو به صورت 32 بیتی انجام میده که همیشه 1 بیت از حافظه گوشی برای ذخیره rlo ها 1 هست پس این متغیر هم میتونه فقط تا عدد 9223372036854775807 رو محاسبه کنه!

در کامپیوتر با توجه به اینکه حافظه rlo از cpu به ram منتقل شدههیچ بیتی مشغول نیست پس میتونه تا  256 بیت باینری رو برای محاسبات استفاده کنه!برای همین در کامپیتر و گوشی همیشه این اعدا به صورت توان دار محاسبه میشوند.

تنها تفاوت در مقدار توان هاست!در گوشی اعداد کوچکتر و توان بیشتر میشه و در کامپیتر برعکس.

 

موفق باشید :»

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...