2010-12-30 2 views
1

Я делаю приложение для химической формулы, и я сделал так, чтобы он возвращал двойные коэффициенты.Химический балансир в Java

Например, C6H12O6 + O2 = CO2 + H2O возвращает .166666667, 1.0, 1.0 и 1.0. Я хочу написать код так, чтобы он был 1, 6, 6 и 6 (целые числа). Кроме того, для другого уравнения, такого как Ca (OH) 2 + H3PO4 = Ca3 (PO4) 2 + H2O, возврат равен .5, .333333333, .166666667 и 1.0. Это должно быть 3, 2, 1 и 6. Есть ли способ преобразовать их в целочисленные коэффициенты в Java?

ответ

0

Использовать подходящий тип. В вашем случае это будет тип фракции, которого не существует (в JDK, Google is your friend). Перейдите на страницу Wikipedia или math.stackexchange.com, чтобы освежить свои знания о них.

После того, как вы сделали балансировку, используйте наименьшее общее кратное для всех знаменателей, чтобы получить целые дроби.

0

Как и Аарон, рациональный тип не является стандартным Java.

Однако существуют внешние библиотеки, такие как JScience с его типом Rational. К сожалению, нет никакой информации о потенциальной доступности для платформы Android. Если это не так, попробуйте получить вдохновение от этого, чтобы создать свой собственный рациональный класс.

4

Выполняйте расчеты с использованием библиотеки фракций (например, this one by apache). Он будет сохранять результаты ваших вычислений как фракции. Затем вы можете использовать Fraction.getDenominator(), чтобы найти общий и умножить остальную часть своих коэффициентов на него.

 Смежные вопросы

  • Нет связанных вопросов^_^