1. double
jenis
Java menyediakan double
jenis untuk bekerja dengan nombor nyata (pecahan). Ia menduduki 8 bytes
dalam ingatan (dua kali lebih banyak daripada int
jenis) dan boleh menyimpan nilai dalam julat dari hingga . Sebagai perbandingan: jenis boleh menyimpan nilai dalam julat dari hingga .-1.7*10308
+1.7*10308
int
-2*109
+2*109
Dalam nombor nyata, bahagian pecahan ditulis selepas titik perpuluhan. Contohnya, 123.456, atau 2.5, atau 100.00, atau 0.01. Apabila komputer berurusan dengan nombor sedemikian, kami memanggilnya nombor titik terapung .
By the way, sebagai tambahan kepada double
jenis, kami juga mempunyai float
jenis (yang hanya bersaiz 4 bait). Namanya berasal dari titik terapung . Dan nama itu double
berasal dari pelampung berganda . A double
adalah dua kali lebih besar daripada a float
: 8 bytes
berbanding 4
. Ia juga dipanggil nombor titik terapung berketepatan ganda .
2. Mencipta double
jenis
Jenis berganda digunakan untuk menyimpan nombor nyata. Untuk mencipta pembolehubah dalam kod yang boleh menyimpan nombor nyata, anda perlu menggunakan pernyataan seperti ini:
double name;
double
jenis
Di mana nama ialah nama pembolehubah. Contoh:
Kenyataan | Penerangan |
---|---|
|
Pembolehubah sebenar price dicipta |
|
Pembolehubah sebenar weight dicipta |
|
Pembolehubah sebenar lightSpeed dicipta |
Seperti int
jenis, anda boleh menggunakan trengkas untuk mencipta berbilang double
pembolehubah secara serentak:
double name 1, name 2, name 3;
double
pembolehubah
Dan dengan serta-merta memberikan nilai kepada mereka:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
double
pembolehubah
Contoh:
Kenyataan | Catatan |
---|---|
|
Kedai berubah-ubah5.0 |
|
Kedai berubah-ubah2.0 |
|
3. Menetapkan integer dan nombor nyata
Ia akan menjadi buruk jika integer boleh diberikan hanya kepada int
pembolehubah, dan nombor nyata - hanya kepada double
pembolehubah. Kami mahu dapat menukar antara dua jenis nombor. Dan Java menyediakan keupayaan ini.
Pertama, kedua-dua nombor nyata dan integer boleh diberikan kepada double
pembolehubah. Apabila memberikan integer, ia hanya ditukar kepada nombor nyata. Sudah tentu, beberapa ketepatan mungkin hilang dalam proses itu.
Kenyataan | Catatan |
---|---|
|
Kedai berubah-ubah5.0 |
|
Kedai berubah-ubah2.0 |
|
Kedai x berubah-ubah1000000.0 |
Kedua, jika integer dan nombor nyata terlibat dalam beberapa ungkapan, maka integer mula-mula ditukar kepada nombor nyata dan barulah operasi dengan nombor nyata yang lain dilakukan.
Kenyataan | Catatan |
---|---|
|
Kedai x berubah-ubah5000.0 |
|
Nombor tersebut 10 akan dipaparkan pada skrin |
|
Nombor tersebut 10.0 akan dipaparkan pada skrin |
Dan akhirnya, ia juga mungkin untuk menetapkan nombor nyata kepada int
pembolehubah. Apabila kita melakukan ini, bahagian pecahan nombor nyata dibuang — nombor itu dibundarkan ke bawah kepada nombor bulat terdekat.
Selain itu, pengkompil memerlukan pengaturcara untuk mendokumentasikan perkara yang berlaku secara eksplisit (untuk memastikan pengaturcara lain memahami bahawa bahagian pecahan sedang digugurkan). Secara umum, penukaran sedemikian kelihatan seperti ini dalam kod:
integer_variable = (int)(real_number);
int
pembolehubah
Contoh:
Kenyataan | Catatan |
---|---|
|
Kedai x berubah-ubah5 |
|
Kedai x berubah-ubah5 |
|
Kedai x berubah-ubah11 |
4. Membahagi integer dan nombor nyata dalam Java
Apabila membahagikan integer dengan integer, bakinya sentiasa dibuang. Jadi bagaimana kita boleh membahagi 5
dengan 2
untuk mendapatkan 2.5
?
Pada mulanya, nampaknya pilihan yang betul ialah:
double d = 5 / 2;
Tetapi ia tidak begitu mudah. Masalahnya di sini ialah mesin Java mula-mula mengira nilai 5 / 2
dan hanya kemudian memberikan hasilnya kepada d
pembolehubah. Dan 5 / 2
operasinya ialah pembahagian integer. Maksudnya d
akan mengandungi 2
atau, lebih tepat lagi,2.0
Penyelesaian yang betul ialah menulis sekurang-kurangnya satu daripada nombor yang terlibat dalam pembahagian sebagai nombor nyata (iaitu dengan titik perpuluhan):
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
Dalam setiap ungkapan, d
akan mengandungi2.5
Tetapi bagaimana jika kita bekerja dengan pembolehubah? Bagaimana jika kita mempunyai kod seperti ini?:
int a = 5;
int b = 2;
double d = a / b;
Terdapat penyelesaian yang licin (dan jelas) di sini — memaksa mesin Java untuk menukar pembolehubah kepada nombor nyata dengan mendarabkannya dengan satu sebagai nombor nyata ( 1.0
)
int a = 5;
int b = 2;
double d = a * 1.0 / b;
Ambil perhatian bahawa pendaraban dan pembahagian mempunyai keutamaan yang sama, dan dilakukan dari kiri ke kanan. Ini bermakna ia penting di mana kita mendarabkan 1.0.
Contoh:
Kenyataan | Perintah pelaksanaan | Hasilnya |
---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION