1. doublejenis

Java menyediakan doubletipe untuk bekerja dengan bilangan real (pecahan). Ini menempati 8 bytesmemori (dua kali lebih banyak dari jenisnya int) dan dapat menyimpan nilai dalam rentang dari hingga . Sebagai perbandingan: tipe dapat menyimpan nilai dalam rentang dari hingga .-1.7*10308+1.7*10308int-2*109+2*109

Dalam bilangan real, bagian pecahan ditulis setelah titik desimal. Misalnya, 123,456, atau 2,5, atau 100,00, atau 0,01. Ketika komputer menangani angka-angka seperti itu, kami menyebutnya angka floating point .

Omong-omong, selain tipenya double, kami juga punya tipenya float(yang ukurannya hanya 4 byte). Namanya berasal dari floating point . Dan namanya doubleberasal dari double float . A doubleadalah dua kali lebih besar sebagai float: 8 bytesversus 4. Ini juga disebut angka floating-point presisi ganda .


2. Membuat doubletipe

Tipe ganda digunakan untuk menyimpan bilangan real. Untuk membuat variabel dalam kode yang dapat menyimpan bilangan real, Anda perlu menggunakan pernyataan seperti ini:

double name;
Membuat doubletipe

Di mana nama adalah nama variabel. Contoh:

Penyataan Keterangan
double price;
Variabel nyata pricedibuat
double weight;
Variabel nyata weightdibuat
double lightSpeed;
Variabel nyata lightSpeeddibuat

Seperti tipenya int, Anda dapat menggunakan singkatan untuk membuat beberapa doublevariabel secara bersamaan:

double name 1, name 2, name 3;
Membuat banyak doublevariabel

Dan bahkan segera memberikan nilai kepada mereka:

double name 1 = value 1, name 2 = value 2, name 3 = value 3;
Membuat dan menginisialisasi banyak doublevariabel

Contoh:

Penyataan Catatan
double price = 5.0;
Toko variabel5.0
double weight = 2;
Toko variabel2.0
double x = 1.0, y = 2.0, z = 3.0;

3. Menetapkan bilangan bulat dan bilangan real

Akan buruk jika bilangan bulat hanya dapat ditugaskan ke intvariabel, dan bilangan real - hanya ke doublevariabel. Kami ingin dapat mengonversi antara dua jenis angka. Dan Java menyediakan kemampuan ini.

Pertama, bilangan real dan bilangan bulat dapat diberikan ke doublevariabel. Saat menetapkan bilangan bulat, mereka hanya diubah menjadi bilangan real. Tentu saja, beberapa akurasi mungkin hilang dalam prosesnya.

Penyataan Catatan
double price = 5.0;
Toko variabel5.0
double weight = 2;
Toko variabel2.0
int t = 1000;
double x =  t * t;

Toko xvariabel1000000.0

Kedua, jika bilangan bulat dan bilangan real terlibat dalam beberapa ekspresi, maka bilangan bulat pertama-tama diubah menjadi bilangan real dan baru kemudian operasi dengan bilangan real lainnya dilakukan.

Penyataan Catatan
int t = 1000;
double x = t * 5.0;

Toko xvariabel5000.0
System.out.println(5 * 2);
Nomor 10akan ditampilkan di layar
System.out.println(5 * 2.0);
Nomor 10.0akan ditampilkan di layar

Dan terakhir, dimungkinkan juga untuk menetapkan bilangan real ke intvariabel. Saat kita melakukan ini, bagian pecahan dari bilangan real dibuang — bilangan dibulatkan ke bawah ke bilangan bulat terdekat.

Selain itu, kompiler mengharuskan pemrogram untuk secara eksplisit mendokumentasikan apa yang terjadi (untuk memastikan bahwa pemrogram lain memahami bahwa bagian pecahan sedang dibuang). Secara umum, konversi seperti ini terlihat seperti ini dalam kode:

integer_variable = (int)(real_number);
Menetapkan bilangan real ke intvariabel

Contoh:

Penyataan Catatan
int x = (int)(5.5);
Toko xvariabel5
double a = 5.999;
int x = (int)(a);
Toko xvariabel5
double a = 5.999;
int b = 2;
int x = (int)(a * b);
Toko xvariabel11


4. Membagi bilangan bulat dan bilangan real di Jawa

Saat membagi bilangan bulat dengan bilangan bulat, sisanya selalu dibuang. Lalu bagaimana kita dapat membagi 5dengan 2mendapatkan 2.5?

Pada awalnya, sepertinya opsi yang benar adalah:

double d = 5 / 2;

Tapi itu tidak begitu sederhana. Masalahnya di sini adalah bahwa mesin Java pertama-tama menghitung nilai dari 5 / 2dan baru kemudian memberikan hasilnya ke dvariabel. Dan 5 / 2operasinya adalah pembagian bilangan bulat. Itu berarti d akan mengandung 2atau, lebih tepatnya,2.0

Solusi yang benar adalah dengan menulis setidaknya satu angka yang terlibat dalam pembagian sebagai bilangan real (yaitu dengan titik desimal):

double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;

Di setiap ekspresi, d akan berisi2.5

Tetapi bagaimana jika kita bekerja dengan variabel? Bagaimana jika kita memiliki kode seperti ini ?:

int a = 5;
int b = 2;
double d = a / b;

Ada solusi yang apik (dan jelas) di sini — paksa mesin Java untuk mengonversi variabel menjadi bilangan real dengan mengalikannya dengan satu sebagai bilangan real ( 1.0)

int a = 5;
int b = 2;
double d = a * 1.0 / b;

Perhatikan bahwa perkalian dan pembagian memiliki prioritas yang sama, dan dilakukan dari kiri ke kanan. Itu artinya penting di mana kita mengalikan 1,0.

Contoh:

Penyataan Urutan eksekusi Hasil
int a = 5;
int b = 2;
double d = 1.0 * a / b;
(1.0 * a) / b; 2.5
int a = 5;
int b = 2;
double d = a * 1.0 / b;
(a * 1.0) / b; 2.5
int a = 5;
int b = 2;
double d = a / b * 1.0;
(a / b) * 1.0; 2.0