算术运算始终计算为0

时间:2015-03-12 23:28:01

标签: c#

我正在研究植绒算法,为此我需要有一个凝聚力的算法。为此,我使用这一行:

velocityVector.X = 10 / (distX - distanceBetweenLabels) 
                          * (label.Location.X - ctrl.Location.X);

在此行之后,velocitVector.X始终等于0. distX始终为正。我的目标是在颗粒之间产生良好的内聚力,同时保持它们之间的最小距离。

更新

所以感谢评论10 / (distX - distanceBetweenLabels)默认为整数计算,因此将整行等同于0。

1 个答案:

答案 0 :(得分:2)

10 / (distX - distanceBetweenLabels) 
                      * (label.Location.X - ctrl.Location.X);
如果分母结果为整数,则

10保持表达式为整数 对于10.0的浮点数,将其更改为10F或更高10D以获得双精度。

评估以下内容:

var intTest = 10/123;
var floatTest = 10F/123;
var doubleTest = 10D/123;

输出为:

0
0.08130081
0.0813008130081301