Como posso prevenir / detectar um underflow em um cálculo do PostgreSQL que usa EXP ()

votos
2

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?

Publicado 05/01/2009 em 18:56
fonte usuário
Em outras línguas...                            


2 respostas

votos
2

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

Respondeu 29/01/2009 em 16:18
fonte usuário

votos
1

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;
Respondeu 08/07/2013 em 19:37
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more