我正在建立一个以钼为输入的化学模型,但是离散地模拟分子(即每个分子是一个实体)。因此,我需要能够将比例计算为整数。例如,如果我有0.01摩尔的 A 和0.002摩尔的 B ,我会将其扩展到10个单位的 A 和2个单位的< EM>乙。但是,这段代码非常不优雅,并假设所有的摩尔数都小于1.0,即
// Find the exponent to offset the value
NumberFormat format = new DecimalFormat("0.#E0");
String value = format.format(smallest);
int exponent = Integer.parseInt(value.substring(value.indexOf("E") + 1));
// Scale to whole numbers
exponent = Math.abs(exponent) + 1;
for (int ndx = 0; ndx < input.size(); ndx++) {
input.get(ndx).count = (long)(input.get(ndx).mols * Math.pow(10, exponent));
}
是否有一种有效的算法可以对任意输入执行十进制移位(例如,1.1摩尔的 A ,0.11摩尔的 B ,0.001摩尔的 C 获得1100个 A 单位,110个 B 单位和1个 C 单位?