Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
[JAVA] Chào mọi người. Em đang cần tính toán 1 biểu thức phức tạp cần chia làm nhiều bước
Ví dụ (a/b + c/d)*e/f
Kiểu dữ liệu a b c d e f là BigDecimal. Tính biểu thức trên chia làm các bước như sau
=> tính a/b = a.divide(b, 2, RoundingMode.HALF_EVEN)
=> tính c/d ....
=> tính a/b + c/d.....
Em gặp phải vấn đề là nếu kết quả phép là số thập phân vô hạn ( ví dụ 10/3 = 3.33333) thì throw exception nên phải làm tròn 2 chữ số như trên. Mỗi bước đều làm tròn nên kết quả cuối cùng cần tính ko chính xác nữa.
Có cách nào để tính kết quả cuối cùng chính xác ko ạ?
Câu Hỏi Của Bạn Lam Lam
Nếu như trên thì khai triển ra thành (a*d+c*b)*e/(f*b*d) giúp cho phép toán chỉ thực hiện 1 phép chia duy nhất để tăng độ chính xác
Thứ 2 nữa là bạn có thể viết một class PhanSo có hàm để cộng và nhân 2 phân số, đến khi cần kết quả thì chỉ cần lấy mẫu chia tử.