2014-12-21 4 views
3

Я работаю над java-программой, в которой мне нужно вычислить и хранить огромные значения в массиве. До сих пор я получаю значение, подключив вводимый переменный в экспоненциальную функцию:Манипуляция BigIntegers в Java

Math.pow(7,x); 

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

bigArray[i] = new BigInteger((long)Math.pow(7,x)); 

не работает, так как я имею дело со значений больше, чем 100, как х. Что я могу сделать?

ответ

9

ли ответ

BigInteger bi = BigInteger.valueOf(7).pow(x); 
+0

Спасибо aioobe, что полностью решило мою проблему! –

0

Поставка строки в качестве параметра для конструктора BigInteger, например.

BigInteger bigInteger = new BigInteger("1000000000000000000000000000000000000000000000000000000000000000000"); 

В вашем случае

BigInteger bigInteger = new BigInteger("7").pow(x); 
+1

Да, это выглядит хорошо. +1. –

+0

Так почему же отрицательные голоса? – sol4me

+0

Возможно, некоторые люди не удосужились его прочитать. Я не знаю. –

3

aioobe уже при условии, что предполагает использование BigInteger.valueOf правильно, но я хочу, чтобы предоставить дополнительную информацию.

Как он говорит:

BigInteger bi = BigInteger.valueOf(7).pow(x); 

Но позволяет также посмотреть документацию Java в отношении «valueOf()» метод:

«Это„статический метод фабрики“предоставляется в предпочтение (long), потому что он позволяет повторно использовать часто используемые BigIntegers. "

http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#valueOf(long)

+0

Спасибо за помощь! Дополнительная информация также помогает –

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