Как изменить точность математической функции в Oracle - PullRequest
0 голосов
/ 02 мая 2019

Как я могу изменить точность функций ln и power в oracle?Я получаю очень точные результаты - 40 цифр.Проблема в том, что у меня огромная таблица, поэтому вычисления очень длинные, и мне не нужна такая точность.Стандартные 7 или 16 цифр были бы хороши и, вероятно, ускорили бы вычисления.Обратите внимание, что я не спрашиваю о функции округления, потому что она только изменит формат результата и не повлияет на само вычисление.

Редактировать Мой реальный запрос сложен, поэтомуоставим вещи простыми, давайте рассмотрим

select ln(2) from dual;

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

Ответы [ 2 ]

1 голос
/ 04 мая 2019

Просто обрежьте ln, чтобы избежать округления.

    select trunc(ln(2),7),ln(2) from dual;

Выходы:

     0.6931471  0.693147180559945
0 голосов
/ 07 мая 2019

Оказалось, что преобразование аргумента в binary_double - идеальное решение для моих проблем эффективности. Для аргументов binary_double функции power и ln выдают результаты binary_double. Теперь оба моих запроса оцениваются за пару минут вместо 1 часа 15 минут и 40 минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...