Как сделать возведение в степень e, когда 'e' является десятичным для очень больших чисел e? - PullRequest
4 голосов
/ 06 ноября 2019

Скажем,

base = 2 и e = 20000.5671

Как выполнить (базовая мощность e) для приведенного выше примера в Java.

Clearly Math.pow (base, д) это не тот путь, по которому печатается «Бесконечность»

, а BigDecimal принимает только «е» типа int.

Есть ли другой способ добиться этого? Ожидая больше библиотеки JDK, чем 3p.

Ответы [ 2 ]

7 голосов
/ 06 ноября 2019

Вы можете попробовать использовать правило продукта экспоненты .

a b + c = a b * a c

, чтобы вы могли поднять 2 до степени 20000, используя функцию BigDecimal, а затем умножить на 2, увеличивая до степени 0,5671

Примечание: -

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

1 голос
/ 06 ноября 2019

Итак, есть математическое решение:

BigDecimal.valueOf(2).pow(20000).multiply(BigDecimal.valueOf(Math.pow(2, .5671)))
...