面试题答案
一键面试fn main() {
let num: f64 = std::f64::NAN;
if num.is_nan() {
println!("The number is NaN");
} else {
println!("The number is not NaN");
}
}
Rust使用is_nan
方法检测NaN而不是简单比较操作,原因在于NaN的定义特性。IEEE 754标准规定,任何与NaN进行的比较操作(包括==
和!=
)结果都为false
。例如,NaN == NaN
返回false
,NaN != NaN
也返回false
。这是因为NaN代表未定义或不可表示的值,它不具有明确的数值,所以简单的比较操作无法正确判断。而is_nan
方法是专门为检测NaN而设计,它依据IEEE 754标准实现,能够准确判断一个f64
值是否为NaN。