Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math I';我们在计算锈蚀时得到了“-inf”:什么是“-inf”?_Math_Rust - Fatal编程技术网

Math I';我们在计算锈蚀时得到了“-inf”:什么是“-inf”?

Math I';我们在计算锈蚀时得到了“-inf”:什么是“-inf”?,math,rust,Math,Rust,以下代码生成结果-inf fn main() { println!("{}", (-10. / 0.)); } 但是,当我尝试下面的代码时,它没有打印true,而是给了我一个错误 fn main() { println!("{}", (-10. / 0.) == -inf); } fn main() { println!("{}", (-10. / 0.) == -inf); } 我应该给出什么值而不是-inf来打印true 什么是-inf 它是IEEE浮点标准中

以下代码生成结果
-inf

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

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

fn main() {
    println!("{}", (-10. / 0.) == -inf);
}
fn main() {
    println!("{}", (-10. / 0.) == -inf);
}
我应该给出什么值而不是
-inf
来打印
true

什么是
-inf

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

然而,当我尝试下面的代码时,它没有打印为true,而是给了我一个错误

fn main() {
    println!("{}", (-10. / 0.) == -inf);
}
fn main() {
    println!("{}", (-10. / 0.) == -inf);
}
Rust不定义名为
inf
的全局变量或关键字。因此,除非首先定义(或从某处导入)具有该名称的变量,否则不能使用
inf
-inf
只是将负无穷大转换为字符串时得到的字符串。它本身不是有效的浮点文本

我应该给出什么值而不是-inf来获得真正的打印输出

您可以使用给定浮点类型中的常量
INFINITY
NEG_INFINITY
,例如
-10./0. == 标准::f64::负无穷大
-10./0. == -std::f64::无穷大
。或者您可以定义
let inf=10.;
,则
(-10./0.)==-inf
为真。或者您可以直接编写
-10./0. == -1. / 0.
或导致负无穷大的任何其他表达式

什么类型是
-inf

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


请注意,这与两个浮点数相除(或相加、相乘等)的任何其他情况没有任何区别。换句话说,
x/y
其中
y
为0。与
x/y
类型完全相同,其中
y
是任何其他浮点数。

如sepp2k所述,
-inf
无效。要检查无限值,请尝试使用
f64::is_finite()
或与常量
std::f64::INFINITY
std::f64::NEG_INFINITY
进行比较

fn main(){
让结果为:f64=-10./0。;
println!(“{}”,result.is_infinite());//true
println!(“{}”,result==std::f64::INFINITY);//false
println!(“{}”,result==std::f64::NEG_无穷大);//真
}

它是规范的一部分。减去无穷大
0/-10
将为您提供
0
,而不是
-inf
。你是说
-10/0
?“我原以为-inf==-inf会返回true,但它不起作用。”你能更具体一点吗?您具体尝试了什么?它是如何不起作用的?负无穷大确实应该和它自己相等,请建立一个平衡点。很难理解您测试了什么,以及您如何推断
-inf==-inf
是错误的。@FrenchBoiethios谢谢,我在我的答案中添加了
NEG_INFINITY