1. double
loại
Java cung cấp double
kiểu để làm việc với số thực (phân số). Nó chiếm 8 bytes
trong bộ nhớ (gấp đôi so với int
loại) và có thể lưu trữ các giá trị trong phạm vi từ đến . Để so sánh: loại có thể lưu trữ một giá trị trong phạm vi từ đến .-1.7*10308
+1.7*10308
int
-2*109
+2*109
Trong số thực, phần phân số được viết sau dấu thập phân. Ví dụ: 123,456 hoặc 2,5 hoặc 100,00 hoặc 0,01. Khi máy tính xử lý các số như vậy, chúng tôi gọi chúng là số dấu phẩy động .
Nhân tiện, ngoài double
loại, chúng tôi cũng có float
loại (chỉ có kích thước 4 byte). Tên của nó xuất phát từ dấu phẩy động . Và tên double
đến từ double float . A double
lớn gấp đôi a float
: 8 bytes
so với 4
. Nó còn được gọi là số dấu phẩy động có độ chính xác kép .
2. Tạo double
kiểu
Kiểu double dùng để lưu số thực. Để tạo một biến trong mã có thể lưu số thực, bạn cần sử dụng một câu lệnh như sau:
double name;
Trong đó tên là tên của biến. Ví dụ:
Tuyên bố | Sự miêu tả |
---|---|
|
Một biến thực price được tạo ra |
|
Một biến thực weight được tạo ra |
|
Một biến thực lightSpeed được tạo ra |
Đối với int
loại, bạn có thể sử dụng tốc ký để tạo double
đồng thời nhiều biến:
double name 1, name 2, name 3;
Và thậm chí ngay lập tức gán giá trị cho chúng:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
Ví dụ:
Tuyên bố | Ghi chú |
---|---|
|
Các cửa hàng biến5.0 |
|
Các cửa hàng biến2.0 |
|
3. Gán số nguyên và số thực
Sẽ thật tệ nếu các số nguyên chỉ có thể được gán cho int
các biến và các số thực - chỉ cho double
các biến. Chúng tôi muốn có thể chuyển đổi giữa hai loại số. Và Java cung cấp khả năng này.
Đầu tiên, cả số thực và số nguyên đều có thể được gán cho double
các biến. Khi gán số nguyên, chúng chỉ đơn giản được chuyển đổi thành số thực. Tất nhiên, một số độ chính xác có thể bị mất trong quá trình này.
Tuyên bố | Ghi chú |
---|---|
|
Các cửa hàng biến5.0 |
|
Các cửa hàng biến2.0 |
|
Các x cửa hàng biến1000000.0 |
Thứ hai, nếu một số nguyên và một số thực có liên quan đến một biểu thức nào đó, thì trước tiên số nguyên đó được chuyển đổi thành một số thực và chỉ sau đó phép toán với số thực kia mới được thực hiện.
Tuyên bố | Ghi chú |
---|---|
|
Các x cửa hàng biến5000.0 |
|
Số 10 sẽ được hiển thị trên màn hình |
|
Số 10.0 sẽ được hiển thị trên màn hình |
Và cuối cùng, cũng có thể gán số thực cho int
biến. Khi chúng ta làm điều này, phần phân số của số thực sẽ bị loại bỏ — số được làm tròn xuống thành số nguyên gần nhất.
Ngoài ra, trình biên dịch yêu cầu lập trình viên ghi lại rõ ràng những gì đang xảy ra (để đảm bảo rằng các lập trình viên khác hiểu rằng phần phân số đang bị loại bỏ). Nói chung, một chuyển đổi như vậy trông như thế này trong mã:
integer_variable = (int)(real_number);
Ví dụ:
Tuyên bố | Ghi chú |
---|---|
|
Các x cửa hàng biến5 |
|
Các x cửa hàng biến5 |
|
Các x cửa hàng biến11 |
4. Chia số nguyên và số thực trong Java
Khi chia một số nguyên cho một số nguyên, phần dư luôn bị loại bỏ. Làm thế nào sau đó chúng ta có thể chia 5
cho 2
để nhận được 2.5
?
Lúc đầu, có vẻ như tùy chọn đúng là:
double d = 5 / 2;
Nhưng nó không đơn giản như vậy. Vấn đề ở đây là máy Java trước tiên tính toán giá trị của 5 / 2
và chỉ sau đó mới gán kết quả cho d
biến. Và 5 / 2
phép toán là phép chia số nguyên. Điều đó có nghĩa là d
sẽ chứa 2
hoặc, chính xác hơn,2.0
Giải pháp đúng là viết ít nhất một trong các số liên quan đến phép chia dưới dạng số thực (nghĩa là có dấu thập phân):
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
Trong mỗi biểu thức, d
sẽ chứa2.5
Nhưng nếu chúng ta đang làm việc với các biến thì sao? Nếu chúng ta có mã như thế này thì sao?:
int a = 5;
int b = 2;
double d = a / b;
Có một giải pháp khéo léo (và rõ ràng) ở đây — buộc máy Java chuyển đổi các biến thành số thực bằng cách nhân chúng với một dưới dạng số thực ( 1.0
)
int a = 5;
int b = 2;
double d = a * 1.0 / b;
Lưu ý rằng phép nhân và phép chia có mức độ ưu tiên như nhau và được thực hiện từ trái sang phải. Điều đó có nghĩa là vấn đề là chúng ta nhân 1,0 ở đâu.
Ví dụ:
Tuyên bố | Trình tự thực hiện | Kết quả |
---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION