Java 中的化学平衡器

发布于 2024-10-09 21:23:00 字数 262 浏览 9 评论 0原文

我正在为化学公式制作一个应用程序,并且我已经制作了它,以便它返回双系数。

例如,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 中将它们转换为整数系数?

I'm making an app for a chemical formula, and I have made it so that it returns double coefficients.

For example, C6H12O6 + O2 = CO2 + H2O returns .166666667, 1.0, 1.0, and 1.0. I want to write code so that it is 1, 6, 6, and 6 (integers). Also, for another equation, like Ca(OH)2 + H3PO4 = Ca3(PO4)2 + H2O, the return is .5, .333333333, .166666667, and 1.0. It should be 3, 2, 1, and 6. Is there a way I can convert these to integer coefficients in Java?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

友欢 2024-10-16 21:23:00

使用分数库(例如 apache 的这个)进行计算。它将把你的计算结果保留为分数。然后,您可以使用 Fraction.getDenominator() 查找公共系数并将其余系数乘以它。

Do your calculations using a fraction library (like this one by apache). It will keep the results of your calculations as fractions. You can then use Fraction.getDenominator() to find the common one and multiply the rest of your coefficients out by it.

时光沙漏 2024-10-16 21:23:00

使用适当的类型。在您的情况下,这将是一个不存在的分数类型(在 JDK 中, Google 是你的朋友))但是。前往 维基百科math.stackexchange.com 来更新您对它们的了解。

平衡后,使用找到所有分母的最小公倍数来获得整数分数。

Use the appropriate type. In your case, that would be a fraction type which doesn't exist (in the JDK, Google is your friend), yet. Go to Wikipedia or math.stackexchange.com to freshen up your knowledge about them.

After you did the balancing, use find the smallest common multiple for all denominators to get integer fractions.

不…忘初心 2024-10-16 21:23:00

正如 Aaron 所说,有理类型不是 Java 标准类型。

但是,有一些外部库提供了它,例如 JScience 及其 理性类型。不幸的是,没有关于 Android 平台潜在可用性的信息。如果情况并非如此,请尝试从中获得灵感来创建自己的理性类。

Like Aaron suggests, the rational type is not a Java standard one.

However, there are external libraries providing it, like JScience with its Rational type. Unfortunately, there is no information about a potential availability for the Android platform. If it's not the case, try get inspiration from it to create your own rational class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文