Re: rounding down a number
От | Duncan Garland |
---|---|
Тема | Re: rounding down a number |
Дата | |
Msg-id | MBEPKEEDMKGCDODFKLPPKEABEGAA.duncan.garland@ntlworld.com обсуждение исходный текст |
Ответ на | rounding down a number ("Michael" <mmcelarn@hotmail.com>) |
Список | pgsql-novice |
Why not create a wrapper function? Something along the lines of:
CREATE OR REPLACE FUNCTION f_round( NUMERIC ) RETURNS INTEGER AS '
DECLARE
original_number ALIAS FOR $1;
rounded_number INTEGER;
BEGIN
rounded_number := ROUND( original_number );
IF rounded_number = original_number + 0.5 THEN
rounded_number := rounded_number - 1;
END IF;
RETURN rounded_number;
END;
' LANGUAGE 'plpgsql';
DECLARE
original_number ALIAS FOR $1;
rounded_number INTEGER;
BEGIN
rounded_number := ROUND( original_number );
IF rounded_number = original_number + 0.5 THEN
rounded_number := rounded_number - 1;
END IF;
RETURN rounded_number;
END;
' LANGUAGE 'plpgsql';
SELECT f_round( 100.0 ) FROM team LIMIT 1;
SELECT f_round( 100.1 ) FROM team LIMIT 1;
SELECT f_round( 100.4 ) FROM team LIMIT 1;
SELECT f_round( 100.4999999999 ) FROM team LIMIT 1;
SELECT f_round( 100.5 ) FROM team LIMIT 1;
SELECT f_round( 100.5000000001 ) FROM team LIMIT 1;
SELECT f_round( 100.6 ) FROM team LIMIT 1;
SELECT f_round( 100.9 ) FROM team LIMIT 1;
SELECT f_round( 100.1 ) FROM team LIMIT 1;
SELECT f_round( 100.4 ) FROM team LIMIT 1;
SELECT f_round( 100.4999999999 ) FROM team LIMIT 1;
SELECT f_round( 100.5 ) FROM team LIMIT 1;
SELECT f_round( 100.5000000001 ) FROM team LIMIT 1;
SELECT f_round( 100.6 ) FROM team LIMIT 1;
SELECT f_round( 100.9 ) FROM team LIMIT 1;
f_round
---------
100
(1 row)
---------
100
(1 row)
f_round
---------
100
(1 row)
---------
100
(1 row)
f_round
---------
100
(1 row)
---------
100
(1 row)
f_round
---------
100
(1 row)
---------
100
(1 row)
f_round
---------
100
(1 row)
---------
100
(1 row)
f_round
---------
101
(1 row)
---------
101
(1 row)
f_round
---------
101
(1 row)
---------
101
(1 row)
f_round
---------
101
(1 row)
---------
101
(1 row)
-----Original Message-----
From: pgsql-novice-owner@postgresql.org [mailto:pgsql-novice-owner@postgresql.org]On Behalf Of Michael
Sent: 30 March 2007 22:39
To: pgsql-novice@postgresql.org
Subject: [NOVICE] rounding down a numberHi,
I’m trying to round down any number with a half, but keep the round function for all other fractions.
For example
100.1 becomes 100
100.4 becomes 100
100.5 becomes 100 (this one would ordinarily round to 101)
100.6 becomes 101
100.9 becomes 101
Thanks, Mick
В списке pgsql-novice по дате отправления: