为了账号安全,请及时绑定邮箱和手机立即绑定

+0.0和-0.0上的哪些操作和函数给出不同的算术结果?

+0.0和-0.0上的哪些操作和函数给出不同的算术结果?

C
一只斗牛犬 2019-12-05 13:23:22
在C中,何时±0.0支持-0.0或+0.0分配给double通常不会产生算术差异。尽管它们具有不同的位模式,但它们在算术上的比较是相等的。double zp = +0.0;double zn = -0.0;printf("0 == memcmp %d\n", 0 == memcmp(&zn, &zp, sizeof zp));// --> 0 == memcmp 0printf("==          %d\n", zn == zp);                        // --> ==          1受到@Pascal Cuoq注释的启发,我正在寻找标准C中的其他一些函数,这些函数提供算术上不同的结果。注意:许多函数(例如sin())+0.0从f(+0.0)和-0.0从中返回f(-0.0)。但是这些没有提供不同的算术结果。同样,这2个结果不应该同时为NaN。
查看完整描述

3 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

IEEE 754-2008函数rsqrt(将在将来的ISO C标准中使用)在±0上返回±∞,这非常令人惊讶。并tgamma在±0上返回±∞。使用MPFR,mpfr_digamma在±0上返回与±∞相反的值。


查看完整回答
反对 回复 2019-12-05
  • 3 回答
  • 0 关注
  • 791 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信