PDA

View Full Version : سوال: چگونگی عملیات بر روی اعداد بزرگ (خیلی خیلی بزرگ)



man_iran
دوشنبه 25 شهریور 1387, 12:34 عصر
سلام
این موضوع را در چند جا مطرح کردم ولی باز بی جواب ماند. امیدوارم اینجا به نتیجه برسم.

من می خوام در برنامه خود عملیات بزرگ ریاضی انجام بدم منظورم از عملیات بزرگ یعنی خیلی خیلی خیلی بزرگ!!
مثلا استفاده از اعدادی نظیر 99999999999999999999999999999999999999999999999999 999999999999999999
و حتی بیشتر!

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

مطمئنا روشی هست که به کار من بخوره پس خواهشا راهنمایی کنید.

h.jaza
دوشنبه 25 شهریور 1387, 12:57 عصر
تنها راهی که به ذهن من میرسه استفاده از آرایهاس و لاغیر...

در ضمن دوست عزیز میشه یکم بیشتر راجع به این برنامه ای که یه همچین اعداد بزرگی می خواد، توضیح بدی.:متفکر:

mehdi.mousavi
دوشنبه 25 شهریور 1387, 13:54 عصر
سلام
این موضوع را در چند جا مطرح کردم ولی باز بی جواب ماند. امیدوارم اینجا به نتیجه برسم.
من می خوام در برنامه خود عملیات بزرگ ریاضی انجام بدم منظورم از عملیات بزرگ یعنی خیلی خیلی خیلی بزرگ!! مثلا استفاده از اعدادی نظیر 99999999999999999999999999999999999999999999999999 999999999999999999
و حتی بیشتر! ولی اگر از اینت، فلوت، دابل، لونگ و... استفاده کنم چنین اعدادی را ساپورت نمی کنند چون در محدوده خود جا نمی گیرند. ضمنا می خواهم عملیات ریاضی مانند جمع و تفریق و... نیز بر روی آنها انجام بدم. حالا دنبال روشی می گردم که بشه از آن استفاده کرد. مطمئنا روشی هست که به کار من بخوره پس خواهشا راهنمایی کنید.

سلام.
لطفا به این مقاله رجوع کنید. (http://www.codeproject.com/KB/cs/biginteger.aspx)

Salar Ashgi
دوشنبه 25 شهریور 1387, 14:27 عصر
سلام ، میتونید عددتون رو بصورت رشته در نظر بگیرید !!

man_iran
سه شنبه 26 شهریور 1387, 09:21 صبح
سلام ، میتونید عددتون رو بصورت رشته در نظر بگیرید !!

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

Salar Ashgi
سه شنبه 26 شهریور 1387, 11:02 صبح
مرسی آقا سالار ولی هر جا من این سوال را پرسیدم شما همین را گفتید.
اگر می شه دربارش بیشتر توضیح بدید و نحوه این کار را بگید.

=====================================

دوست عزیز ؛ همانطور که میدونید استرینگ محدوده اش خیلی بیشتر از اعضای داده ای

عددی است ( int , double, float,decimal , ...) ، پس برای اینکار مناسب است ، ولی

همانطور که قبلا گفتم ، باید یک کلاسی واسه این عمل نوشت و عمل جمع رو روی رشته ها

Over Load کرد !!! حتما با نحوه سربارگذاری عملگرها در سی شارپ آشنایی دارید ،


public static string operator+(string a,string b)
{
....
}


طریقه نوشتن این تابع جمع هم ، دقیقا مثل این است که چگونه ما دو عدد را جمع میکنیم ؟؟؟

دو عدد زیر هم ، یکانها را با هم جمع می کنیم ، اگه بیشتر از 10 بود ، باقیمانده آن بر 10 میشه

رقم یکان عدد حاصل ، و خارج قسمت تقسیم آن بر 10 میشه ( بر دست ) ، و همینطور تا آخر!

=======================

ولی هر جا من این سوال را پرسیدم شما همین را گفتید.

پاورقی : انجام اینکار خیلی ساده بود ، به همین دلیل نیازی به نوشتن نداشت

======================

موفق و پیروز باشید !!!!