2011-10-21 8 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の間の整数除算を実行しています。結果は常に整数になります。hmm100より大きいため、結果は0になります。

は、代わりにこれを試してみてください:

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

HMMはintです。計算を実行するときに浮動小数点または倍精度として宣言してください。

IE。

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

問題は最後のコード行です。 100/hmmと書いた場合、結果は100が整数であるため整数値として見られます。常に小数点低下

((double)100)/hmm; 
0

整数除算を使用してみてください。したがって、1/100 = .01のようなものはちょうど0になります。

関連する問題