我正在做一些數學計算(嘗試使用VS2010將Matlab代碼轉換爲C++),並且我需要能夠判斷某個點是否得到負數0.在C++中檢測一個爲0的負數0
根據IEEE標準-0/+ 0僅在符號位(其餘爲0)上有所不同。
我已經使用了下面的代碼段(post)來解釋我的雙象一個無符號字符
double f = -5;
unsigned char *c = reinterpret_cast<unsigned char *>(&f);
for(int i=(sizeof(double)-1); i>=0; i--){
printf("%02X", c[i]);
}
5/-5嘗試它,我得到預期的結果:
C014000000000000 (-5)
4014000000000000 (5)
但是當我用0/-0進行試驗時,在這兩種情況下我只得到零。 VS2010聲明他們符合IEEE標準(msdn),所以我不確定哪一部分我沒有收到。
如果0/-0確實以完全相同的方式存儲在內存中,如果我需要,我不能將它們分開,所以我應該停止浪費我的時間:)對不對?
嘗試-0.0而不是-0 – wimh 2011-04-01 17:25:15