Một điểm quan trọng được ám chỉ nhưng không được đề cập trực tiếp là sự khác biệt giữa "độ chính xác" và "tỷ lệ" và cách chúng được sử dụng trong hai tuyên bố. "Độ chính xác" là tổng số chữ số có nghĩa trong một số. "Tỷ lệ" là số chữ số ở bên phải dấu thập phân.
Hàm tạo MathContext chỉ chấp nhận độ chính xác và RoundingMode làm đối số và do đó thang đo không bao giờ được chỉ định trong câu lệnh đầu tiên.
setScale()
rõ ràng chấp nhận tỷ lệ như một đối số, cũng như RoundingMode, tuy nhiên độ chính xác không bao giờ được chỉ định trong câu lệnh thứ hai.
Nếu bạn di chuyển dấu thập phân một nơi sang phải, sự khác biệt sẽ trở nên rõ ràng:
// 1.
new BigDecimal("35.3456").round(new MathContext(4, RoundingMode.HALF_UP));
//result = 35.35
// 2.
new BigDecimal("35.3456").setScale(4, RoundingMode.HALF_UP);
// result = 35.3456