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;
}
}
}