0

我有一个查询,我需要找到exp一个数字。在某些情况下,exp返回溢出错误的函数太大,或者在某些情况下,函数的参数exp太大。在这些情况下,我需要返回一些任意值。

示例(不起作用)

select LEAST(exp(1000), 1::double precision);

在这里,我试图找到exp(1000). 如果它太大,我返回 1。

我怎样才能在 Postgres 中做到这一点?

4

1 回答 1

0

像这样的东西:

create or replace function safe_exp(val double precision)
  returns double precision
  language plpgsql
as
$body$
declare
  result double precision;
begin
  begin
    result := exp(val);
  exception 
    when others then 
      result := 1.0;
  end;
  return result;
end;
$body$

但是由于异常块,这将比“常规”exp()调用慢。

于 2012-09-25T09:35:27.627 回答