Search Postgresql Archives

any plans to support more rounding methods in sql?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



hi,

i just needed to round some numbers down to 4 decimal places but a quick search
indicated that postgresql doesn't support all of the rounding methods so i had
to write this dreadful function:

create or replace function round_down_to_4_decimal_places(amount decimal(12,6))
returns decimal(10,4) stable language sql as $$

    select
        case
            when $1 >= 0 then
                case when $1 - round($1, 4) < 0 then round($1, 4) - 0.0001 else round($1, 4) end
            else
                case when $1 - round($1, 4) > 0 then round($1, 4) + 0.0001 else round($1, 4) end
        end

$$;

this is fine for my purposes but it's not generic to different numbers of decimal
places and it's 26 times slower than the built-in round(v numeric, s int).
strangely, a plpgsql version is much faster but it's still 11 times slower than
a built-in version would be.

python's decimal module supports the following rounding methods:

  ROUND_UP        (round away from zero)
  ROUND_DOWN      (round towards zero)
  ROUND_CEILING   (round up)
  ROUND_FLOOR     (round down)
  ROUND_HALF_UP   (round 5 away from zero, rest to nearest)
  ROUND_05UP      (round away from zero if last significant digit is 0 or 5, rest towards zero)
  ROUND_HALF_DOWN (round 5 towards zero, rest to nearest)
  ROUND_HALF_EVEN (round 5 to even, rest to nearest)

are there any plans to support any other rounding methods natively?

cheers,
raf


-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux