2011-10-21 66 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