Estou recebendo um valor fora do intervalo: erro de underflow de pgsql, em uma consulta que usa a função EXP (x). Quais são os valores de x desencadear esta? Como faço para evitar ou detectar isso?
Como posso prevenir / detectar um underflow em um cálculo do PostgreSQL que usa EXP ()
A função exp é chamada a função exponencial, e o seu inverso é o logaritmo natural, ou logaritmo de base e. O número de e também é geralmente definida como a base do logaritmo natural
Em outras palavras, exp (x) e e ^ x são a mesma função. No entanto, uma vez e é um número transcendental, e, portanto, irracional, seu valor não pode ser determinado com exatidão.
O valor numérico e truncado para 10 casas decimais é 2,71828 1828
Assim, o exp função (x) é tecnicamente válida para todos os valores de x, mas em termos práticos, você pode limitá-los. Por exemplo, se você limitar-los a +/- 700 você deve cobrir todos os casos que cobrem a gama
exp(700) = 1.01423205 × 10^304
exp(-700) = 9.85967654 × 10^-305
Mais do que isso depende da sua aplicação
A solução que eu estou usando é figurar gama controlo sobre os meus argumentos usando 'caso' do que cair de volta a um padrão se é fora do escopo razoável:
SELECT CASE WHEN p > 100 THEN 0
ELSE .1 ^ p
END;













