我的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/

10-09 08:27