У меня возникли проблемы со скоростью в моей программе на 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;
}
}
}