c - IEEE754中是否有关于加法的中性元素

标签 c floating-point double ieee-754 low-level

考虑以下代码片段

double id = ?;
double res;
long unsigned *res_u = (long unsigned*)&res;

long unsigned i;
for (i = 0; i < (long unsigned)-1; i++){
    double *d1 = (double*)&i;
    res = id + *d1;
    assert(*res_u == i);
}

我的问题:是否有 id 的值,以便断言对所有 i 都成立?换句话说,对于我们中间的数学家来说:加法的中性元素是否为 double?

最佳答案

-0. 矛盾的是浮点值作为加法的中性值。

+0. 几乎是,但是 -0。 + (+0.) 使 +0..

除此之外,+inf + (-0.) 生成 +inf-inf + (-0.) 生成 -infNaN + (-0.) 生成 NaN

关于c - IEEE754中是否有关于加法的中性元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16287864/

相关文章:

C程序执行后控制台立​​即退出?

c - 如何在不重写整个 zip 的情况下修改非常大的 zip 中的单个文件?

c - 如何使用 C 函数中的值

c++ - 是否存在允许任意精度指数的 C/C++ 任意精度浮点库?

c++ - 为什么 c++ double 会将自己限制为小数点后 5 位?

C++ 文件 IO : read input of "29.0" to double but output is "29", 即 ".0"已删除

c - 如何使用按位运算来补充最右边的位以保持前导零位为零?

C++ 将 float 转换为无符号字符?

java - 在java中将 float 转换为具有相同位表示形式的整数?

java - 使用 Dijkstra (java) 得出的平均距离结果不正确