我的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;
}
}
}
最佳答案
可以使用n/d > c
代替n > d * c
(假设d > 0
)。
(c
是您要比较的常数值。)
这样,您根本不需要划分。
但是,请注意溢出。
关于c# - 除以小数点后最接近的小数点后一位无浮点运算?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2615622/