Tính căn bậc 3 của một số nguyên

Mình muốn tính căn bậc 3 của một số nguyên, và sau đó lấy phần nguyên dưới của nó nên đã dùng code như trong hình. Tuy nhiên thì lại có một số kết quả bị sai trong hình (mình nghĩ là do phép tính xấp xỉ của máy tính nên mới làm tròn như vậy). Mọi người cho mình hỏi là nên sửa thế nào hay dùng hàm nào để có kết quả đúng ạ.
Cảm ơn các bạn.

cbrt(x) thử xem sao.

3 Likes

std::llround(std::cbrt(x))

5 Likes

mình cũng gặp trường hợp tương tự khi tính LOGa(b) bằng hàm log(b)/log(a) thì nên xử ly ntn ạ?

Tính toán liên quan tới số thực thì bạn nên chuẩn bị tinh thần cho việc bị sai số, vì đây là tin, chứ hổng phải toán.

Còn việc lấy phần nguyên thì dễ xử lý hơn chút, trước tiên là cứ dùng các hàm làm tròn như std::llround, sau đó kiểm tra lại với sai số \pm 1 để xem trong 3 giá trị thì giá trị nào đúng nhất.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?