2014-03-13 54 views
0

我想分成像下面這樣的變量。我發現,當我劃分c這是double和價值例如是0.013777788770019110差異變爲6.9533479143199673e-310在C++中劃分後的奇怪結果

double diff = c/static_cast<double>(10); 

爲什麼結果是這樣的。你能幫我嗎。

部分代碼是這樣的:

double c = uniform(0,(nextac0PktExpir->getArrivalTime() - simTime()).dbl()); 
double diff = c/10.0; 
+0

爲什麼不使用10.0而不是'static_cast'? – crashmstr

+0

是的,我可以。他們是一樣的。但問題不在於此。 – user3415921

+0

我認爲雙重演員是不必要的,因爲它會隱含執行 – xmoex

回答

2
#include <iostream> 

int main() 
{ 
    double c(0.0134); 
    double diff; 
    std::cout << diff << std::endl; 
    diff = c /10.0; 
    std::cout << diff; 

    return 0; 
} 

使用g ++它將打印:

6.95322e-310 (or something similar...) 
0.00134 

在執行任務之前,你可能會檢查diff在調試器的價值。

+2

受過教育的猜測? :) – xtofl

+0

謝謝。我正是那樣做的。因爲它是一個大代碼,我在gbd中調試它,我發現像6.9533479143199673e-310 diff,我沒有找到任何其他形式。 – user3415921

+0

如何在調試器中看到正常輸出? – user3415921

0

這對我的作品。它給出了預期的結果。

#include <iostream> 
using namespace std; 

int main() 
{ 
double c = 0.0134 ; 
double diff = c /10; 
cout << diff; 
return 0; 
}