Mọi người cho em hỏi vì sao giá trị của a = 5;
khi em đưa về floor, int,… của a rồi so sánh thì em nghĩ điều kiện sẽ đúng. nhưng chương trình lại trả về sai, mọi người giải thích giúp em với ạ, em cảm ơn nhiều :D.

Thắc mắc về so sánh dữ liệu kiểu double
- Thử in cả 2 giá trị xem chúng có bằng nhau không.
- Thao tác với số thực thì dùng phép toán so sánh
==là không nên, nó chả mấy khi đúng đâu.
2 Likes
hàm pow(x, y) nếu y ko phải là số nguyên thì kết quả trả về ko chính xác 100%.
thay vì dùng hàm floor(a) dùng round(a). Kết quả trả về có thể là 4.99999 hoặc 5.00001, round nó làm tròn về 5.0 hết, còn floor thì 4 hoặc 5.
à muốn ktra số trả về có là số nguyên ko thì :V trước tiên làm tròn về số nguyên bằng lround hoặc llround: int i = lround(a) rồi kiểm tra i * i * i == k ban đầu :V
C++ có hàm cbrt(x) để lấy căn bậc 3, chính xác hơn tí nhưng vẫn ko bảo đảm căn bậc ba của số mũ 3 là số nguyên :V Căn bậc 2 sqrt(x) thì bảo đảm căn số bình phương là chính xác kết quả số nguyên. ( std::sqrt is required by the IEEE standard to be exact)
7 Likes
Dạ vâng em cảm ơn 2 anh :DDDD
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?