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