2016-01-21 66 views
-1

我想計算omnet中的double值,並且一切都定義爲double,以計算傳感器節點的剩餘能量。但它以整數格式計算能級。所以我看不到雙重價值。它將能量減少1,但它應該減少0.000538。例如,如果初始能量是10,我應該看到剩下的10 - 0.000538,但是我看到了它9.因此我們的結果是不正確的。我怎麼解決這個問題?Omnet ++雙變量錯誤

lcnBtrySt = (double)getParentModule()->par("lcnBat_Full") 

//lcnBtrySt is reached from the network.ned file. 

//When I append the .DOUBLE to end of the 

(double)getParentModule()->par("lcnBat_Full").DOUBLE

//its energy starts from 67.But actual one is 110160 j. 
//I cannot fix the problem. 


Rx value = 0.000538 ,hopBits =10.0; 

    ev<<"Rx is equal to ",lcnBtrySt=lcnBtrySt-(Rx*hopBits); 

感謝您的幫助。

+0

請不要在您的帖子的任何地方添加「緊急」的大喊,特別是標題。 – halfer

回答

1

一般情況下,不要強制返回值(編寫(double)foo)。這將隱藏任何可能發生的錯誤:它強制編譯器接受你試圖分配的任何東西 - 不管s是否是一個好主意。

使用par("foo").doubleValue()以雙精度讀取參數的值。

+0

感謝您的幫助@Christoph Sommer。但它沒有顯示預期的價值。我需要看到110160-0.000538 = 110159.999462.It總是遞減1. 110159,110158我在卡住請幫助我。 – eakn

+0

'Rx值= 0.000538,hopBits = 10.0;'看起來很奇怪。你可以嘗試進一步簡化你的例子嗎? –