C# 算术运算始终计算为0
我正在研究植绒算法,为此,我需要一个内聚力的算法。为此,我使用以下行:C# 算术运算始终计算为0,c#,C#,我正在研究植绒算法,为此,我需要一个内聚力的算法。为此,我使用以下行: velocityVector.X = 10 / (distX - distanceBetweenLabels) * (label.Location.X - ctrl.Location.X); 在这一行之后,velocitVector.X始终等于0。distX总是正的。我的目标是在粒子之间产生良好的内聚力,同时保持它们之间的最小距离 更新 因此,感谢您的评论,10/(di
velocityVector.X = 10 / (distX - distanceBetweenLabels)
* (label.Location.X - ctrl.Location.X);
在这一行之后,velocitVector.X始终等于0。distX总是正的。我的目标是在粒子之间产生良好的内聚力,同时保持它们之间的最小距离
更新
因此,感谢您的评论,10/(distX-标签之间的距离)
默认为整数计算,因此整行等于0
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
尝试使用
10.0
而不是10
-它可能默认为int
算术。分母中的数字是整数吗?一个整数除以任何大于10的数字将导致整数结果为零-您可能需要使用浮点/双精度算术-这不是完全准确的。10
不会使“整个表达式成为整数计算”。如果变量distX
和distanceBetweenLabels
也是整数,则表达式10/(distX-distanceBetweenLabels)
使用整数数学计算。但是,如果distX
和distanceBetweenLabels
中的任何一个是double
,则表达式将使用浮点数学进行计算。