( تعداد نمایش : 2233 )

انواع اعداد اعشاری جاوا

اعداد اعشاری یا همان اعداد حقیقی برای ارزش گذاری عبارتهایی که نیازمند
دقت بیشتری هستند ، استفاده می شوند . بعنوان نمونه ، محاسباتی نظیر ریشه دوم
و محاسبات مثلثاتی نظیر سینوس و کسینوس منجربه جوابهایی می شوند که برای تعیین
دقت آن نیاز به نوع عدد اعشاری می باشد . جاوا یک مجموعه استاندارد (
IEEE-754)
از انواع عدد اعشاری و عملگرها را پیاده سازی می کند. دو نوع عدد اعشاری تعریف
شده یعنی
floatو doubleو هستند که بترتیب معرف دقت معمولی و مضاعف می باشند .
پهنا و دامنه آنها را در زیر نشان داده ایم :
دامنه پهنا بر حسب تعداد بیت نام
double 64 1.7e-308 to 1.7e+308
float 32 3.4e-038 to 3.4e+038

هر یک از انواع اعشاری را متعاقبا” مورد بررسی قرار می دهیم .
float

این نوع مشخص کننده یک مقدار با دقت معمولی بوده که از ۳۲ بایت حافظه
استفاده می کند . دقت معمول روی بعضی پردازنده ها سریعتر بوده و نسبت به دقت
مضاعف نیمی از فضا را اشغال می کند ، اما هنگامیکه مقادیر خیلی بزرگ یا خیلی
کوچک باشند ، دقت خود را از دست میدهد . متغیرهای نوع float برای زمانی مناسب
هستند که از یک عضو کسری استفاده می کنید اما نیازی به دقت خیلی زیاد ندارید .
بعنوان مثال ، نوع
float برای معرفی دلار و سنت بسیار مناسب است . + float hightemp/ lowtemp;

double

دقت مضاعف که با واژه کلیدی double معین می شود برای ذخیره کردن یک مقدار ۶۴
بیت فضا را اشغال می کند . دقت مضاعف روی برخی پردازنده های جدید که برای
محاسبات ریاضی با سرعت زیاد بهینه شده اند ، واقعا” سریعتر از دقت معمولی عمل
می کند . کلیه توابع مثلثاتی نظیر ()
sin ، ()cos و ()sqrt مقادیر مضاعف را
برمی گردانند . هنگام اجرای محاسبات مکرر که نیاز به حفظ دقت دارید و یا هنگام
کار با ارقام خیلی بزرگ
double بهترین انتخاب است .
در زیر برنامه ای را مشاهده می کنید که از
double استفاده نمود تا محیط یک
دایره را محاسبه کند :

+ // Compute the area of a circle.
+ class Area {
+ public static void main(String args[] ){
+ double pi/ r/ a;
+
+ r = 10.8; // radius of circle
+ pi = 3.1416; // pi/ approximately
+ a = pi * r * r; // compute area
+
+ System.out.println(“Area of circle is ” + a);
+ }
+ }

کاراکترها
در جاوا از نوع داده
char برای ذخیره کردن کاراکترها استفاده می شود . اما
برنامه نویسان
Cو C++و آگاه باشند که char در جاوا مشابه char در زبانهای C و C++
نیست . در زبانهای
Cو C++و ، نوع char یک نوع عدد صحیح با پهنای ۸ بیت
است . اما جاوا متفاوت عمل می کند . جاوا از کدهای جهانی (
unicode) برای معرفی
کاراکترها استفاده می کند . کدهای جهانی یک مجموعه کاملا” جهانی از کاراکترها
هستند که می توانند همه کاراکترها را معرفی نمایند . این مجموعه شامل دهها
مجموعه کوچک تر کاراکتری نظیر
Latin، Greek،، Arabic،، Cyrillic،، Hebrew، Katakana
،
Hangul، و امثال آن است .
برای این منظور ، ۱۶ بیت مورد نیاز است . بنابراین
char در جاوا یک نوع ۱۶
بیتی است . دامنه
charاز ۰ز تا ۶۵/۵۳۶ می باشد . در نوع char مقدار منفی وجود
ندارد . مجموعه استاندارد کاراکترها موسوم به
ASCII همچون گذشته دارای دامنه
از ۰ تا ۱۲۷ و مجموعه کاراکترهای ۸ بیتی توسعه یافته موسوم به
lso-Latin-1
دارای دامنه از ۰ تا ۲۵۵ می باشند .
چون در جاوا امکان نوشتن ریز برنامه ها برای کاربری جهانی وجود دارد ، بنظر
می رسد که بهتر است جاوا از کدهای جهانی برای معرفی کاراکترها استفاده نماید .
البته بکار بردن کدهای جهانی درمورد زبانهایی نظیر انگلیسی ،آلمانی ،اسپانیایی
یا فرانسوی که کاراکترهای آنها را می توان براحتی داخل ۸ بیت جای داد ، تا حدی
سبب نزول کارآیی خواهد شد . اما این بهایی است که برای رسیدن به قابلیت حمل
جهانی در برنامه ها باید پرداخت .
نکته : اطلاعات بیشتر درباره کدهای جهانی را در آدرسهای وب زیر پیدا خواهید
نمود :
http://www .unicode .org
http://www .stonehand .com/unicode .html

در زیر برنامه ای را مشاهده می کنید که متغیرهای char را نشان می دهد :

+ // Demonstrate char data type.
+ class CharDemo {
+ public static void main(String args[] ){
+ char ch1/ ch2;
+
+ ch1 = 88; // code for X
+ ch2 = ‘Y’;
+
+ System.out.print(“ch1 and ch2 :”);
+ System.out.println(ch1 + ” ” + ch2);
+ }
+ }

این برنامه خروجی زیر را نشان خواهد داد : ch1 and ch2 icon mad انواع اعداد اعشاري جاوا y

دقت کنید که مقدار ۸۸به ch1 نسبت داده شده ، که مقدار متناظر با حرف x در
کد
ASCII ( و کد جهانی ) است . قبلا” هم گفتیم که مجموعه کاراکتری ASCII َ۱۲۷
مقدار اولیه در مجموعه کاراکتری کدهای جهانی را اشغال کرده است . بهمین دلیل
کلیه فوت و فنهای قدیمی که قبلا” با کاراکترها پیاده کرده اید ، در جاوا نیز به
خوبی جواب می دهند .
اگر چه انواع
char عدد صحیح محسوب نمی شوند ، اما در بسیاری از شرایط
می توانید مشابه عدد صحیح با آنها رفتار کنید . بدین ترتیب قادرید دو کاراکتر
را با هم جمع نموده و یا اینکه مقدار یک متغیر کارکتری را کاهش دهید . بعنوان
مثال ، برنامه زیر را در نظر بگیرید :

+ // char variables behave like integers.
+ class CharDemo2 {
+ public static void main(String args[] ){
+ char ch1;
+
+ ch1 = ‘X’;
+ System.out.println(“ch1 contains ” + ch1);
+
+ ch1++; // increment ch1
+ System.out.println(“ch1 is now ” + ch1);
+ }
+ }

خروجی این برنامه بشرح زیر خواهد بود : ch1 contains x
ch1 is now y

در برنامه ابتدا مقدار xبه ch1 داده میشود . سپس ch1 افزایش می یابد . این
روال باعث می شود تا ch1 حرف y را اختیار کند، که کاراکتر بعدی در ترتیب ASCII
(
و کدهای جهانی ) می باشد .
Boolean

جاوا یک نوع ساده موسوم به boolean برای مقادیر منطقی دارد . این نوع فقط
یکی از مقادیر ممکن trueیا falseا را اختیار می کند . این نوعی است که توسط
کلیه عملگرهای رابطه ای نظیر b
شرطی که دستورهای کنترلی نظیر ifو forو را مدیریت می کنند ، استفاده می شود .
در زیر برنامه ای مشاهده می کنید که نوع boolean را نشان می دهد :

+ // Demonstrate boolean values.
+ class BoolTest {
+ public static void main(String args[] ){
+ boolean b;
+
+ b = false;
+ System.out.println(“b is ” + b);
+ b = true;
+ System.out.println(“b is ” + b);
+
+ // a boolean value can control the if statement
+ if(b )System.out.println(“This is executed.”);
+
+ b = false;
+ if(b )System.out.println(“This is not executed.”);
+
+ // outcome of a relational operator is a boolean value
+ System.out.println(“10 > 9 is ” +( 10 > 9));
+ }
+ }

خروجی برنامه فوق بقرار زیر خواهد بود :

b is false
b is true
This is executed.
10>9 is true

درباره این برنامه سه نکته جالب توجه وجود دارد . اول اینکه وقتی که مقدار boolean
توسط ()println خارج می شود ، می بینید که “true”یا “false”ا بنمایش
درمی آید . دوم اینکه یک متغیر boolean بتنهایی برای کنترل دستور if کفایت
می کند . دیگر نیازی به نوشتن یک دستور if بقرار زیر نخواهد بود : + if(b == true… )

سوم اینکه ، پی آمد یک عملگر رابطه ای نظیربولین یک مقدار است

دیدگاه خود را بیان کنید.

باید وارد سایت شده باشید برای دیدگاه دادن