Я использую алгоритм подбора, и минимальная ошибка результата подбора намного больше
чем точность Math.exp ().
Трансцендентные функции всегда намного медленнее, чем сложение или умножение и хорошо известное узкое место. Если вы знаете, что ваши значения находятся в узком диапазоне, вы можете просто построить справочную таблицу (два отсортированных массива; один вход, один выход). Используйте Arrays.binarySearch, чтобы найти правильный индекс и интерполировать значение с элементами в [index] и [index + 1].
Другой способ - разделить число. Давайте возьмем, например, 3,81 и разделить на 3 + 0,81.
Теперь вы умножаете e = 2.718 три раза и получаете 20.08.
Теперь до 0,81. Все значения от 0 до 1 быстро сходятся с известным экспоненциальным рядом
1 + x + x ^ 2/2 + x ^ 3/6 + x ^ 4/24 .... и т. Д.
Возьмите столько терминов, сколько вам нужно для точности; к сожалению, медленнее, если x приближается к 1. Допустим, вы переходите к x ^ 4, тогда вы получите 2.2445 вместо правильного 2.2448
Затем умножьте результат 2.781 ^ 3 = 20.08 на 2.781 ^ 0.81 = 2.2445, и вы получите результат
45,07 с ошибкой в одну часть из двух тысяч (правильно: 45,15).