Trong Java, BigDecimal là một lớp thuộc gói java.math, được sử dụng khi bạn cần làm việc với các số thập phân mà không muốn gặp phải các vấn đề về làm tròn số hoặc mất độ chính xác như khi sử dụng các kiểu dữ liệu nguyên thủy như double hoặc float.
BigDecimal đại diện cho một số thập phân có độ chính xác cao. Một BigDecimal object là immutable và được chia làm 2 phần:
- Precision- Biểu diễn tất các ký số có trong BigDecimal dưới dạng số nguyên không phân biệt phần thập phân.
- Scale (32 bit) – Số nguyên biểu diễn số chữ số thập phân.
Ví dụ: BigDecimal 3.14 có phần Precision là 314 và scale là 2.
Chúng ta sử dụng BigDecimal cho các phép tính số học đòi hỏi độ chính xác cao như các bài toán liên qua đến tiền tệ etc.
Cách sử dụng BigDecimal:
1. Khởi tạo:
Có nhiều cách để tạo một đối tượng BigDecimal, bạn có thể khởi tạo một đối tượng BigDecimal từ một chuỗi (String), một số nguyên (int), một số thực (double), hoặc từ một đối tượng BigInteger.
| Phương thức | Mô tả |
|---|---|
setScale(int newScale, RoundingMode mode) | : Làm tròn số với newScale chữ số thập phân. |
Các chế độ làm tròn (int)
Các giá trị này trước Java 5 được sử dụng trong BigDecimal.setScale(), nhưng từ Java 5 trở đi, chúng đã bị thay thế bởi RoundingMode, mặc dù vẫn được giữ lại để tương thích ngược.
| Field | Giá trị (int) | Mô tả |
|---|---|---|
ROUND_CEILING | 2 | Làm tròn lên (hướng về +∞). |
ROUND_FLOOR | 3 | Làm tròn xuống (hướng về -∞). |
ROUND_DOWN | 1 | Làm tròn về 0 (cắt bỏ phần dư). |
ROUND_UP | 0 | Làm tròn ra xa 0 (luôn tăng giá trị tuyệt đối). |
ROUND_HALF_UP | 4 | Làm tròn về số gần nhất, nếu bằng 0.5 thì làm tròn lên. |
ROUND_HALF_DOWN | 5 | Làm tròn về số gần nhất, nếu bằng 0.5 thì làm tròn xuống. |
ROUND_HALF_EVEN | 6 | Làm tròn về số gần nhất, nếu bằng 0.5 thì làm tròn về số chẵn gần nhất. |
ROUND_UNNECESSARY | 7 | Không cho phép làm tròn, nếu kết quả không chính xác sẽ báo lỗi (ArithmeticException). |
🔹 Ví dụ:
| Trường | Mô tả |
|---|
BigDecimal ZERO | Đại diện cho số 0. |
BigDecimal ONE | Đại diện cho số 1. |
BigDecimal TEN | Đại diện cho số 10. |
.png)

.png)
.png)
.png)
Không có nhận xét nào:
Đăng nhận xét