1. double tipi
Həqiqi (ondalıklı) ədədlərlə işləmək üçün Java-da double tipi istifadə olunur. Yaddaşda o, 8 bayt tutum tutur (bu, int tipindən iki dəfə çoxdur) və -1.7*10308 ilə +1.7*10308 diapazonunda dəyərləri saxlaya bilir. Müqayisə üçün: int tipi -2*109 ilə +2*109 diapazonunda dəyər saxlaya bilər.
Həqiqi ədədlərdə onluq hissə nöqtədən sonra yazılır. Məsələn, 123.456, ya da 2.5, ya da 100.00 ya da 0.01. Belə ədədlərə bəzən üzən nöqtəli ədədlər deyilir — floating point number – həqiqi ədədlər üçün kompüter terminidir.
Bu arada, double tipindən başqa daha bir həqiqi tip var - float (ölçüsü cəmi 4 baytdır). Onun adı məhz floating point-dən əmələ gəlib. double isə double float-dan gəlir. double tipi float-dan iki dəfə böyükdür: 8 bayt 4-ə qarşı. Ona hələ ikili dəqiqlikli həqiqi ədəd də deyirlər.
2. double tipində dəyişənin yaradılması
Double tipi ondalık ədədləri saxlamaq üçün istifadə olunur. Kodda ondalık ədədləri saxlaya bilən dəyişən yaratmaq üçün aşağıdakı şəkildə yazmaq lazımdır:
double ad;
double növü dəyişəninin yaradılması
Burada ad — dəyişənin adı. Məsələn:
| Əmr | Təsvir |
|---|---|
|
price adlı ondalık dəyişən yaradılır |
|
weight adlı ondalık dəyişən yaradılır |
|
lightSpeed adlı ondalık dəyişən yaradılır |
Int tipi ilə olduğu kimi, double üçün də bir neçə dəyişəni qısa yazılışla yarada bilərsiniz:
double ad1, ad2, ad3;
double növündə dəyişənin yaradılması
Hətta dərhal dəyərlər də mənimsədə bilərsiniz:
double ad1 = deyer1, ad2 = deyer2, ad3 = deyer3;
double növündə dəyişənin yaradılması və ilkinləşdirilməsi
Nümunələr:
| Əmr | Qeyd |
|---|---|
|
Dəyişəndə 5.0 dəyəri saxlanılır |
|
Dəyişəndə 2.0 dəyəri saxlanılır |
|
3. Tam və həqiqi ədədlərin mənimsədilməsi
Əgər tam ədədlər yalnız int tipli dəyişənlərə, həqiqi ədədlər isə yalnız double tipli dəyişənlərə mənimsədilə bilərdisə, bu çox pis olardı. Əslində bir növ ədədi başqa növə çevirmək istərdik. Və Java-da belə bir imkan var.
Birincisi, double tipli dəyişənlərə həm həqiqi, həm də tam ədədlər mənimsədilə bilər. Tam ədədlər mənimsədilərkən, sadəcə həqiqi ədədlərə çevrilirlər. Baxmayaraq ki, bəzən bununla bağlı kiçik bir dəqiqlik itkisi ola bilər.
| Əmr | Qeyd |
|---|---|
|
Dəyişəndə 5.0 dəyəri saxlanılır |
|
Dəyişəndə 2.0 dəyəri saxlanılır |
|
Dəyişəndə x 1000000.0 dəyəri saxlanılır |
İkincisi, əgər hər hansı ifadədə tam və həqiqi ədəd iştirak edirsə, tam ədəd əvvəlcə həqiqi ədədə çevrilir və yalnız bundan sonra digər həqiqi ədəd ilə qarşılıqlı təsirə girir.
| Əmr | Qeyd |
|---|---|
|
Dəyişəndə x 5000.0 dəyəri saxlanılır |
|
Ekranda 10 ədədi çap olunacaq |
|
Ekranda 10.0 ədədi çap olunacaq |
Və nəhayət, int tipli dəyişənlərə həqiqi ədədlər mənimsədilə bilər. Bu zaman ədədin kəsr hissəsi atılır - ədəd aşağıya yuvarlanaraq tam ədədə çevrilir.
Həmçinin kompilyator bu faktın açıq şəkildə proqramist tərəfindən sənədləşdirilməsini tələb edir (beləliklə, digər proqramistlər burada kəsr hissəsinin atıldığını başa düşürlər). Bu ifadənin kodda ümumi görünüşü belədir:
tam_eded_deyiskeni = (int)(heqiqi_eded);
int tipli dəyişənə həqiqi ədədin mənimsədilməsi
Nümunələr:
| Əmr | Qeyd |
|---|---|
|
Dəyişəndə x 5 dəyəri saxlanılır |
|
Dəyişəndə x 5 dəyəri saxlanılır |
|
Dəyişəndə x 11 dəyəri saxlanılır |
4. Java-da tam və həqiqi ədədlərin bölünməsi
Tam ədədin tam ədədə bölünməsi zamanı qalıq həmişə atılır. Bəs necə edə bilərik ki, məsələn, 5 ədədini 2-yə bölək və nəticə 2.5 olsun?
Başlanğıcda düzgün variant belə görünə bilər:
double d = 5 / 2;
Ancaq hər şey bu qədər sadə deyil. Məsələ burasındadır ki, Java maşını əvvəlcə 5 / 2 ifadəsinin dəyərini hesablayacaq və yalnız bundan sonra nəticəni d dəyişəninə təyin edəcək. Və 5 / 2 bölünməsi tam bölünəcək. Yəni d 2 və ya daha dəqiq desək, 2.0 dəyərini saxlayacaq.
Düzgün variant belədir: ən azı biri bölünmədə iştirak edən ədədlərdən biri həqiqi (yəni nöqtə ilə) yazılmalıdır:
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
Bu ifadələrin hər birində d dəyəri 2.5 olacaq.
Bəs dəyişənlərdə necə olacaq? Əgər belə bir kodumuz varsa:
int a = 5;
int b = 2;
double d = a / b;
Burada ağıllı (və göz qabağında olan) bir həll var — Java maşınını dəyişənləri həqiqi ədədə çevirməyə məcbur etmək lazımdır, onları həqiqi vahid — 1.0-a vuraraq.
int a = 5;
int b = 2;
double d = a * 1.0 / b;
Diqqət yetirin ki, vurma və bölmə əməliyyatlarının üstünlükləri eynidir və onlar soldan sağa doğru həyata keçirilir. Buna görə də həqiqi vahidi harada vurduğumuz vacibdir.
Nümunələr:
| Komanda | İcra qaydası | Nəticə |
|---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION