我正在为化学公式制作一个应用程序,并且我已经完成了它,以便它返回双系数。
例如,C6H12O6 + O2 = CO2 + H2O 返回 0.166666667、1.0、1.0 和 1.0。我想编写代码,使其为 1、6、6 和 6(整数)。此外,对于另一个方程,例如 Ca(OH)2 + H3PO4 = Ca3(PO4)2 + H2O,返回值为 0.5、0.333333333、0.166666667 和 1.0。它应该是 3、2、1 和 6。有没有办法可以将这些转换为 Java 中的整数系数?
使用分数库进行计算(例如apache 的这个)。它会将您的计算结果保留为分数。然后,您可以使用它Fraction.getDenominator()
来找到常见的系数并将其余系数乘以它。
就像 Aaron 建议的那样,有理类型不是 Java 标准类型。
但是,有外部库提供它,例如 JScience 及其Rational
类型。不幸的是,没有关于 Android 平台潜在可用性的信息。如果不是这样,尝试从中获取灵感,创建自己的理性类。
使用适当的类型。在您的情况下,这将是一个不存在的分数类型(在 JDK 中,Google 是您的朋友),但是。访问Wikipedia或math.stackexchange.com以更新您对它们的了解。
完成平衡后,使用找到所有分母的最小公倍数来获得整数分数。