Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.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
std::numeric_limits::infinity()的倒数是零吗? 是否有任何C++标准(或IEEE 754浮点标准)中的任何东西,保证 1?/STD::MultIcILION:(?)/CUT>为零(或至少是一个小数目)?< /P> < P>任何在无限大的无限大的数字除以IEEE 754的结果(因此在大多数典型的C++实现中也是相同的)。_C++_Floating Point_Infinity - Fatal编程技术网

std::numeric_limits::infinity()的倒数是零吗? 是否有任何C++标准(或IEEE 754浮点标准)中的任何东西,保证 1?/STD::MultIcILION:(?)/CUT>为零(或至少是一个小数目)?< /P> < P>任何在无限大的无限大的数字除以IEEE 754的结果(因此在大多数典型的C++实现中也是相同的)。

std::numeric_limits::infinity()的倒数是零吗? 是否有任何C++标准(或IEEE 754浮点标准)中的任何东西,保证 1?/STD::MultIcILION:(?)/CUT>为零(或至少是一个小数目)?< /P> < P>任何在无限大的无限大的数字除以IEEE 754的结果(因此在大多数典型的C++实现中也是相同的)。,c++,floating-point,infinity,C++,Floating Point,Infinity,如果分子和分母的符号不同,结果将为负零,等于零。是,根据GNU C库参考手册(假设IEEE 754): 无穷大通过计算传播 不出所料:比如2+∞ = ∞, 4/∞ = 0 您可能想检查C++编译器是否使用IEEE 754: 如果(标准:数字\u限制:is\u iec559) 是的(); 其他的 否() (见18.3.2.4) 与IEEE 754相同的IEC 559保证了这一点。然而,C++并不能保证IEC 559的任何位置(虽然99.99%的时间恰好是这样的情况,但是你仍然需要验证才能确定)。

如果分子和分母的符号不同,结果将为负零,等于零。

是,根据GNU C库参考手册(假设IEEE 754):

无穷大通过计算传播 不出所料:比如2+∞ = ∞, 4/∞ = 0

您可能想检查C++编译器是否使用IEEE 754:

如果(标准:数字\u限制:is\u iec559)
是的();
其他的
否()

(见18.3.2.4)


与IEEE 754相同的IEC 559保证了这一点。然而,C++并不能保证IEC 559的任何位置(虽然99.99%的时间恰好是这样的情况,但是你仍然需要验证才能确定)。

< P > IEEE 75—2008 6.1称:

浮点运算中的无穷性是从实数运算的极限情况推导出来的,当实数运算的操作数具有任意大的数量级时,存在这样的极限。应以仿射意义解释无限,即:−∞ < {每个有限数}<+∞.

无限操作数上的操作通常是精确的,因此不发出异常信号

由于在没有边界的情况下,随着x的增加,1/x的极限为零,因此本条款的结果为1/∞ 是零

第6.3条告诉我们结果的符号为+:

当输入和结果都不是NaN时,乘积或商的符号是操作数符号的异或


看看。嗯,不,不完全是:如果有限数是负数,它返回-0,这与0不是一回事(尽管它比较相等)。是的,正确的措辞应该是“结果为零”:@FedericoPoloni:两者都是+0和−IEEE 754规范第2级(浮点数据)中的0表示第1级(扩展实数)中的0。由于没有人可能会费心实现和测试非IEEE 754平台,因此不妨
static\u assert(std::numeric\u limits::is_iec559)
@JohnZwinck:这实际上是一个很好的观点。如果您的代码依赖于IEEE 754细节,那么如果这些细节不存在,它将无法工作。因此,
static\u assert
是一个非常有效的选项(可能,甚至可能更好)。