是否可以将"inf"分配给变量,例如 c++ 中的常规数值



当我编写以下代码时,它没有导致运行时错误,而是输出'inf'。现在,有没有办法把这个值("f"(分配给一个变量,就像常规数值一样?如何检查除法是否产生"inf"?

#include<iostream>    
int main(){
double a = 1, b = 0;
std::cout << a / b << endl;
return 0;
}

C++不需要实现支持无穷大或除以零。许多实现方式将使用IEEE 754格式,即使它们不完全支持IEEE 754语义。

当您想要使用无穷大作为值时(也就是说,您想要在源代码中引用无穷大(,您不应该通过除以零来生成它。相反,包括<limits>并使用std::numeric_limits<T>::infinity(),其中T指定为double

返回由浮点类型T表示的特殊值"正无穷大"。只有当std::numeric_limits< T >::has_infinity== true时才有意义。

(您还可以看到包含<cmath>和使用INFINITY的代码,这些代码是从C.继承的。(

如果要检查数字是否有限,请包括<cmath>并使用std::isfinite。请注意,具有无限值的计算往往最终产生NaNs,并且std::isfinite(x)通常比!std::isinf(x) && !std::isnan(x)更方便。

使用不安全编译器标志时的最后警告:如果使用GCC的-ffinite-math-only(包含在-ffast-math中(,则std::isfinite不起作用。

看起来我可以:

#include<iostream>
int main(){
double a = 1, b = 0, c = 1/0.0;
std::cout << a / b << endl;
if (a / b == c) std::cout << "Yes you can.n";
return 0;
}

相关内容

最新更新