2015-04-06 3 views
0

Я пытаюсь распечатать значения уравнения, с которым я работаю. Уравнение:Поплавкое значение становится слишком маленьким

(2^k)/(k!) 

Я работаю с Java и использует Floats, но у меня возникает проблема, возникающая, когда k становится большим. По мере того как он становится больше, нижняя часть уравнения существенно больше вершины. Итак, как вы можете себе представить, что предел уравнения равен 0. Но по мере того, как число становится меньше, оно проходит 1 * 10^-31, и как только оно, кажется, передает это значение, поплавок, похоже, увеличивается. Я предполагаю, что число становится слишком маленьким, и как только он проходит 10^-31 Java реагирует и делает его более важным. Подобно тому, как если значение float проходит мимо Float.MAX_VALUE, оно переходит к -Float.MAX_VALUE. кто-нибудь знает, как решить эту проблему? Это испортило результаты того, что я пытаюсь выполнить.

спасибо.

+1

как насчет использования класса BigInteger или 'BigDecimal', если вам действительно нужно вычислить значение, которое является большим? –

+0

Дело в том, что это не значение «это большой», его значение «это маленькое». Также я использую библиотеку графики Java для рисования линий, размер которых равен величине уравнения. Таким образом, мне нужно также использовать значение – Jmrapp

+0

Это задание, с которым мне нужно работать. Я рисую длину результата уравнения в точке k. Я не знаю, что вы имеете в виду, нет необходимости вычислять k. Да, есть, мне нужно это для уравнения, как оно говорит ... Я запускаю k от 1 до n, где n - любое значение. – Jmrapp

ответ

0

Давайте посмотрим на (2^k)/(k!). Для к = 1, мы имеем:

2/1 

Для к = 2 мы имеем

2/1 * 2/2 

Для к = 3, мы имеем

2/1 * 2/2 * 2/3 

И так далее. Обратите внимание, что никогда не нужно вычислять полный знаменатель.

+0

Я был недоразумением, я думал, вы говорите, что k! может быть упрощена. Поэтому вы говорите, чтобы упростить конечный результат. – Jmrapp

+0

Я говорю, что вы можете вычислить конечный результат любым способом. Не выбирайте наихудший возможный путь. Вы можете размножаться и делиться в любом порядке или комбинации. –

+0

Правильно, я просто не думал, чтобы посмотреть на результаты уравнения и упростить его. Благодаря! – Jmrapp