计算生锈时,我有-inf:什么是-inf?

Hel*_*rld 1 math rust

以下代码产生结果-inf

fn main() {
    println!("{}", (-10. / 0.));
}

Run Code Online (Sandbox Code Playgroud)

但是,当我尝试以下代码时,它没有打印出来true,而是给了我一个错误。

fn main() {
    println!("{}", (-10. / 0.) == -inf);
}
Run Code Online (Sandbox Code Playgroud)

我应该给什么价值而不是-inftrue打印出来?

sep*_*p2k 5

是什么-inf

它是IEEE浮点标准中定义的负无穷大。这是将负浮点数除以零的结果。

但是,当我尝试以下代码时,它并没有显示为真,而是给了我一个错误。

fn main() {
    println!("{}", (-10. / 0.) == -inf);
}
Run Code Online (Sandbox Code Playgroud)

Rust没有定义名为的全局变量或关键字inf。因此,inf除非先定义(或从某处导入)具有该名称的变量,否则您将无法使用。-inf只是将负无穷大转换为字符串时得到的字符串。它本身不是有效的浮点文字。

我应该给什么值而不是-inf来打印出真值?

您可以使用常量INFINITYNEG_INFINITY从给定浮点类型,如-10. / 0. == std::f64::NEG_INFINITY-10. / 0. == -std::f64::INFINITY。或者,您可以定义let inf = 1. / 0.;,那么(-10. / 0.) == -inf它将是正确的。或者,您可以直接编写-10. / 0. == -1. / 0.或产生负无穷大的任何其他表达式。

什么类型的-inf

的类型与-inf您除以得到的浮点数的类型相同-inf。如果将两个数f32相除,将得到一个f32,如果将两个数f64相除,将得到一个f64。如果尚未确定操作数的类型,则结果的类型将{float}一直到确定更具体的类型为止。

请注意,这与除以两个浮点数(或相加,乘以等)的其他任何情况都没有什么不同。换句话说,x / ywhere y为0。其类型与x / ywhere y其他浮点数完全相同。