تا %60 تخفیف خرید برای 5 نفر با صدور مدرک فقط تا
00 00 00
در توسینسو تدریس کنید

کار با اعداد بسیار بزرگ در جاوا

با سلام به همه دوستان وهمراهان Itpro. همان طور که در مطلب انواع داده ها در جاوا گفته شد انواع عددی دارای محدودیتی می باشد. شاید حالتی پیش بیاید که مجبور شویم با داده های بسیار بزرگ کار کنیم به طوری که انواع داده های موجود پاسخگوی نیازمان نباشند. اگر اندازه های داده ها به قدری باشد که مثلا نوع داده int نتواند داده ما را ذخیره کند و حتی نوع داده long نیز نتواند این کار را بکند باید فکر دیگری به حال ذخیره و کار با داده ها کرد. زبان جاوا برای حل این مشکل دو کلاس معرفی کرده است که بتوان انواع داده بزرگ را در آن ذخیره کرد. یکی برای داده های صحیح با نام BigInteger و دیگری برای ذخیره داده های اعشاری با نام BigDecimal . در کد زیر یک مثال از استفاده از این کلاس ها آورده شده است:

import java.math.BigInteger;
public class MyClass {
    public static void main(String[] args){
	 BigInteger integer=BigInteger.valueOf(500);
        for (int i=0;i<50;i++)
            integer=integer.multiply(BigInteger.valueOf(500));
        System.out.println(integer);

    }
}

خروجی کد بالا به شکل زیر خواهد بود:

444089209850062616169452667236328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

از کد دیده می شود که با این که عدد 500 به توان 50 یک عدد بسیار بزرگ است ولی می توان نتیجه را ذخیره کرد. اما از طرف دیگر این کلاس محدودیت هایی دارد. یکی از محدودیت های این کلاس این است که نمی توان با استفاده از علامت = شئ آن را مقداردهی کرد و باید مقداردهی آن با استفاده از متد valueOf انجام گردد و همچنین برای اعمال ریاضی اصلی +-/ نمی توان از علائم گفته شده استفاده کرد و باید از متدهای مربوطه مانند add, multiply استفاده کرد. نحوه پیاده سازی این کلاس ها به این شکل است که برای ذخیره اعداد بزرگ از یک آرایه استفاده می شود که در هر خانه یک عدد قرار می گیرد و سقف ذخیره سازی این کلاس ها بزرگتری مقدار نوع داده int یعنی بزرگترین عدد 2147483647رقمی خواهد بود که مقدار بزرگی است. نکته ای که باید به آن اشاره کرد این است که برخلاف زبان قدرتمند سی پلاس پلاس که می شود در آن عملگرهایی مانند+ - را overload کرد در جاوا این امکان وجود ندارد و مجبوریم که برای کلاس هایی مانند BigInteger از متدهای مربوطه استفاده کنیم. Itpro باشید*

نویسنده: مهدی عادلی فر

منبع: انجمن تخصصی فناوری اطلاعات ایران

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

نظر شما
برای ارسال نظر باید وارد شوید.
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

افرادی که این مطلب را خواندند مطالب زیر را هم خوانده اند