MST

星途 面试题库

面试题:Rust中如何检测一个浮点数是否为NaN

在Rust中,给定一个`f64`类型的变量`num`,请写出代码判断它是否为NaN。并解释为什么Rust使用这种方式检测NaN而不是简单的比较操作。
46.7万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
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返回falseNaN != NaN也返回false。这是因为NaN代表未定义或不可表示的值,它不具有明确的数值,所以简单的比较操作无法正确判断。而is_nan方法是专门为检测NaN而设计,它依据IEEE 754标准实现,能够准确判断一个f64值是否为NaN。