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