在C中,何時±0.0支持-0.0或+0.0分配給double通常不會產(chǎn)生算術差異。盡管它們具有不同的位模式,但它們在算術上的比較是相等的。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注釋的啟發(fā),我正在尋找標準C中的其他一些函數(shù),這些函數(shù)提供算術上不同的結(jié)果。注意:許多函數(shù)(例如sin())+0.0從f(+0.0)和-0.0從中返回f(-0.0)。但是這些沒有提供不同的算術結(jié)果。同樣,這2個結(jié)果不應該同時為NaN。
3 回答

皈依舞
TA貢獻1851條經(jīng)驗 獲得超3個贊
IEEE 754-2008函數(shù)rsqrt
(將在將來的ISO C標準中使用)在±0上返回±∞,這非常令人驚訝。并tgamma
在±0上返回±∞。使用MPFR,mpfr_digamma
在±0上返回與±∞相反的值。
- 3 回答
- 0 關注
- 588 瀏覽
添加回答
舉報
0/150
提交
取消