Procedura zaokrąglająca liczby zgodnie z matematyczną zasadą dla bazy danych PostgreSQL
Problem z zaokrągleniami kwot jest dość powszechny i kłopotliwy. Dlatego jeśli korzystamy w bazy danych PostgreSQL to możemy się posłużyć poniższą funkcją, która zaokrągli liczby zgodnie z tym jak nauczyliśmy się szkole. Jeśli chcesz dokładniej poznać sposób obliczania kwot na fakturach to zapraszam do artykułu.
Poniższa funkcja została sprawdzona w bazie danych PostgreSQL w wersji 8.3.13 i została ona napisana w plpsql-u.
CREATE OR REPLACE FUNCTION my_round( IN nb numeric, IN rd integer ) RETURNS numeric AS $$ DECLARE BEGIN return ( round( round( ( (nb)::numeric * power( 10, rd + 1 ) )::numeric, 0 ), -1 ) / power( 10, rd + 1 ) )::numeric; END; $$ LANGUAGE 'plpgsql';
Przykładowe wywołanie procedury
SELECT my_round( 180.84 * 1.22, 2 );
Zwróci wynik poprawny 220.63 zamiast 220.62, który zwraca domyślny round z zaokrągleniem do drugiego miejscapo przecinku.
Data publikacji: 2011-01-04 10:24