对最大双精度值的无穷大进行建模
Modeling infinity for the largest double value
问题是关于为double
数据类型建模无穷大C++。 我需要它在头文件中,所以我们无法使用像 numeric_limits
这样的函数。
是否有表示最大值的定义常量?
浮点数(如双精度数(实际上可以保持正负无穷大。常量无穷大应该在你的 math.h 标头中。
去标准潜水,找到了文字:
4 宏无穷大扩展到浮点型的常量表达式表示正无穷大或无符号无穷大(如果有(;否则到 a浮点型的正常数,在翻译时溢出。
在第 7.12 Mathematics <math.h>
节中
然后当然,您有辅助函数isinf
来测试无穷大(这也在math.h中(。
7.12.3.3 信息因子宏
int isinf(real-floating x(;
说明:isinf 宏确定其参数值是否为无穷大(正或负数(。首先,以比其语义类型将转换为其语义类型。然后确定基于参数的类型。
返回:isinf 宏返回非零值当且仅当其参数具有无限价值。
numeric_limits
函数都是constexpr,因此它们可以作为编译时常量正常工作(假设您使用的是当前版本的C++(。因此,std::numeric_limits<double>::infinity()
应该在任何情况下工作。
即使您使用的是旧版本,这仍然可以在不需要编译时常量的任何位置工作。从您的问题中不清楚您的使用是否真的需要编译时常量;仅仅在标题中并不一定需要它。
如果您使用的是旧版本,并且确实需要编译时常量,则 cmath 中的宏INFINITY
应该适合您。它实际上是无穷大float
值,但可以转换为double
。
不知道为什么你不能在头文件中使用 std::numeric_limits。但也有从ANSI C继承下来的:
#include <cfloat>
DBL_MAX
DBL_MAX。这在 float.h 中找到如下
#define DBL_MAX 1.7976931348623158e+308 /* max value */
也许在你的C++环境中你有float.h
,见 http://www.gamedev.net/topic/392211-max-value-for-double-/(DBL_MAX(
我认为答案是"42.0";)
本文可能会引起您的兴趣:
http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
或者这个:
http://www.cplusplus.com/reference/clibrary/cfloat/
最大有限可表示浮点数:
FLT_MAX 1E+37
DBL_MAX 1E+37
LDBL_MAX 1E+37
来自维基百科:
0x 7ff0 0000 0000 0000 = Infinity
0x fff0 0000 0000 0000 = −Infinity
#include <cmath>
...
double d = INFINITY;
您可以在 <cmath>
( math.h
中找到定义INFINITY
:
表示正无穷大或无符号无穷大(如果可用(的
float
类型的常量表达式;否则,在转换时溢出的float
类型的正常量。
行不通吗?
const double infinity = 1.0/0.0;
- 无穷大而循环时具有递归函数
- 满意和建模的概念?
- 在C++中比较无穷大和无穷大
- Rand()大小写开关在多次迭代后运行到无穷大
- 无穷大与 NAN 值
- 动态车辆建模和仿真启动条件
- Android Studio 调试原生代码 lldb 服务器工作无穷大
- 将矩阵建模为单个统一缓冲区对象
- 列明智的建模在音乐会技术中 - 列生成
- Matlab 如何知道有一个 .mex64 文件并避免无穷大"compiling"循环
- 如何查询类型是否建模结构
- 比较无穷大
- 将其建模为BFS背后的直觉
- 为什么双重类型返回无穷大
- Systemc传输级建模从TLM_Generic_Payload提取两个整数
- 如何在Caffe中对复发性卷积神经网络进行建模
- 对火箭C 的速度和高度进行建模
- 范围 v3 和 view_facade,无法对 ForwardRange 进行建模
- 如何获得从负无穷大到无穷大的范围以在 0 到 1 的范围内表示
- 对最大双精度值的无穷大进行建模