Химический балансировщик на Яве - PullRequest
1 голос
/ 30 декабря 2010

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

Например, 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?

Ответы [ 3 ]

4 голосов
/ 30 декабря 2010

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

0 голосов
/ 30 декабря 2010

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

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

0 голосов
/ 30 декабря 2010

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

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

...