Joh*_*res 2 c# floating-point integer division
我的C#程序存在一些速度问题,并确定此百分比计算导致速度减慢.计算只是n/d*100.分子和分母都可以是任何整数.分子永远不会大于分母,永远不会是负数.因此,结果总是从0到100.现在,这是通过简单地使用浮点数学来完成的,并且有点慢,因为它被计算了数千万次.我真的不需要比精确到0.1%更精确的东西.并且,我只是使用这个计算值来查看它是否大于固定的常数值.我认为一切都应该保持为整数,因此0.1精度的范围将是0-1000.有没有办法在没有浮点数学的情况下计算这个百分比?
这是我用于计算的循环:
for (int i = 0; i < simulationList.Count; i++)
{
for (int j = i + 1; j < simulationList.Count; j++)
{
int matches = GetMatchCount(simulationList[i], simulationList[j]);
if ((float)matches / (float)simulationList[j].Catchments.Count > thresPercent)
{
simulationList[j].IsOverThreshold = true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
而不是n/d > c,你可以使用n > d * c(假设d > 0).
(c是你要比较的常数值.)
这样你根本不需要分工.
但请注意溢出.