提问人:Cythonista 提问时间:7/23/2023 最后编辑:Konrad RudolphCythonista 更新时间:7/23/2023 访问量:119
在 C++ 中表示浮点数无穷大的方法
Ways to represent float infinity in C++
问:
我想为我的程序在 C++ 中表达浮点无穷大。
我遇到了两种实现此目的的方法:使用 和 .INFINITY
std::numeric_limits<float>::infinity()
这两种选择似乎都有效,但我不确定哪一个是更好的选择。
一方面,是 math.h 中定义的简单宏,使其易于使用。
另一方面,是 C++ STL 的函数,并且是 STL 的一部分,这似乎是一种传统方式。INFINITY
std::numeric_limits<float>::infinity()
<limits>
综上所述:
我应该在我的 C++ 程序中使用 or 表示浮点无穷大吗?
哪一种被认为是更好的做法,我是否应该注意任何性能或可移植性注意事项?INFINITY
std::numeric_limits<float>::infinity()
答:
在 C 语言中引入了宏来表达在语言中无法很好地表达的东西。在此特定示例中,命名一个编译时常量。INFINITY
C++ 在语言中引入了不同的方法,允许您表达过去在 C 中需要宏的相同内容(在许多情况下,但不是所有情况下)。关于这种特殊情况,C++ 有一种以各种方式命名编译时常量的方法。
与 相比,使用具有以下优点:INFINITY
std::numeric_limits<float>::infinity()
- 它在命名空间内有适当的范围,这意味着其他代码可以使用标识符来表示其他内容,而不会导致名称冲突。
infinity
- 它是强类型并命名一个类型,因此可以专门用于 的不同值,并且可以在泛型上下文中无需转换即可使用。
std::numeric_limits<T>::infinity()
T
- 它是语言的一部分(而不是单独的预处理器语言),这使得第三方工具(例如IDE)更容易与之交互。
由于历史原因,是一个函数,但这并不是很重要,因为(因为它是)您可以在任何可以使用任何其他常量表达式的上下文中使用它。infinity()
constexpr
反之,与 相比,使用 具有以下优点:std::numeric_limits<float>::infinity()
INFINITY
- 它更短。
评论
import std;
INFINITY
std::numeric_limits<T>::infinity()
INFINITY
float
评论
float
double
float
double
INFINITY
的类型是 ,就像 的返回类型一样。float
std::numeric_limits<float>::infinity()