本文整理汇总了C#中ChemicalFormula.MassEquals方法的典型用法代码示例。如果您正苦于以下问题:C# ChemicalFormula.MassEquals方法的具体用法?C# ChemicalFormula.MassEquals怎么用?C# ChemicalFormula.MassEquals使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ChemicalFormula
的用法示例。
在下文中一共展示了ChemicalFormula.MassEquals方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenerateFormulaHelper
private static void GenerateFormulaHelper(double lowMass, double highMass, double[] masses, int[] max, int index, int[] currentFormula, List<ChemicalFormula> formulas)
{
while (index > 0 && max[index] == 0)
{
index--;
}
if (index > 0)
{
int maxCount = Math.Min((int) Math.Ceiling(highMass/masses[index]), max[index]);
for (int count = 0; count <= maxCount; count++)
{
currentFormula[index] = count;
GenerateFormulaHelper(lowMass, highMass, masses, max, index - 1, currentFormula, formulas);
}
}
else
{
double massAtIndex = masses[index];
currentFormula[index] = 0;
double currentMass = currentFormula.Zip(masses, (i, m) => i*m).Sum();
int minCount = Math.Max((int) Math.Floor((lowMass - currentMass)/massAtIndex), 0);
int value = (int) Math.Ceiling((highMass - currentMass)/massAtIndex);
int maxCount = Math.Min(value, max[index]);
for (int count = minCount; count <= maxCount; count++)
{
currentMass += count*massAtIndex;
currentFormula[index] = count;
if (currentMass >= lowMass && currentMass <= highMass)
{
ChemicalFormula formula = new ChemicalFormula(currentFormula);
if (!formula.MassEquals(0.0))
formulas.Add(formula);
}
currentMass -= count*massAtIndex;
}
}
}