tôi có chương trình sau đây:Kết quả so sánh gấp đôi và NaN là gì?
#include <iostream>
#include <cmath>
int main() {
double a = 1;
double b = nan("");
std::cout << (a > b) << std::endl;
std::cout << (b > a) << std::endl;
return 0;
}
Output:
0
0
Nói chung từ ý nghĩa của nan
-not a number
rõ ràng là bất kỳ hoạt động với nan
là bản chất vô nghĩa. Từ IEEE-754
mà tôi tìm thấy trên internet, tôi tìm thấy điều gì xảy ra nếu trong FPU ít nhất một toán hạng là nan
kết quả cũng là nan
, nhưng tôi không thấy gì về so sánh giữa giá trị thông thường và nan
như trong ví dụ trên.
Tiêu chuẩn nói gì về nó?
Chức năng FPU và kết quả logic của so sánh có thể là hai điều khác nhau. Việc tháo gỡ của bạn nói gì? – tadman
Mã của bạn có thể (hoặc có thể không) bị thiếu so sánh '== '. Bạn đã kiểm tra '<' and '>' nhưng không kiểm tra '=='. Có thể bạn muốn sử dụng '<' and '> = 'hoặc' <=' and '>'. – jotik