2011-10-21 90 views
0

好任何人都可以解釋爲什麼varialbe偏移回來爲0 ??? 我需要更新進度條,但該值小於100,偏移量是增加的電流,然後更新的電流值地板的進度條的價值,但因爲它回來0它沒有更新!是煩人雙重價值

double offset = 0.000001; 
int hmm = (image.Height * image.Width); 
double current = 0; 

MessageBox.Show(offset.ToString()); 
MessageBox.Show(hmm.ToString()); 
offset = 100/hmm;// 0.01;// 100/(image.Height * image.Width) * 10000; 

MessageBox.Show(offset.ToString()); 

回答

3

你執行整數師 - 無論hmm100是整數。因此,如果hmm大於100,結果將始終爲0。將任一操作數轉換爲double,並使用浮點運算。例如:

double offset = 100.0/hmm; 
+0

感謝我的工作了張貼的問題後, – Neo

0

嘗試使用

offset = 100./hmm; 

的問題是你使用整數除法。

0

100hmm之間執行整數除法。結果將始終是一個整數,並且您看到它產生0,因爲在您的情況下,hmm大於100

試試這個:

offset = 100f/hmm; // the trailing f makes 100 a float 
0

HMM是一個int。嘗試將其聲明爲float或double,或者在執行計算時將其強制轉換爲此類型。

IE。

offset = 100/((double)hmm); 
0

問題是最後一行代碼。如果你寫100/hmm,結果將被視爲整數值,因爲100是一個整數。嘗試使用

((double)100)/hmm; 
0

整數除法總是下降小數點。因此,像1/100 = 0.01只會變成0