V PostgreSQL, round()
funkce se používá pro zaokrouhlení čísla.
Funkce může fungovat jedním ze dvou způsobů v závislosti na tom, jak ji používáte. Číslo můžete zaokrouhlit na nejbližší celé číslo nebo na zadaný počet desetinných míst.
To je určeno počtem argumentů, které předáte funkci, když ji voláte.
Syntaxe
round()
funkci lze použít jedním z následujících způsobů:
round(dp or numeric)
round(v numeric, s int)
První syntaxe zaokrouhlí číslo na nejbližší celé číslo. dp
označuje double precision
.
Druhá syntaxe jej zaokrouhlí na zadaný počet desetinných míst. V tomto případě v
je číslo a s
je počet desetinných míst.
Návratový typ této funkce je stejný jako typ vstupu.
Příklad první syntaxe
Zde je příklad, který používá první syntaxi.
SELECT round(13.50);
Výsledek:
14
V tomto případě jsou zlomkové sekundy 50, takže číslo je zaokrouhleno nahoru na nejbližší celé číslo.
Pokud by zlomkové sekundy byly menší než 50, byly by zaokrouhleny dolů a výsledek by byl 13.
Zde je příklad.
SELECT round(13.49);
Výsledek:
13
Příklad druhé syntaxe
Zde je příklad, který používá druhou syntaxi.
SELECT round(13.50, 1);
Výsledek:
13.5
V tomto případě se nic nezaokrouhlovalo a nula se prostě vypustila. V takových případech vrací stejný výsledek, jaký bychom viděli, kdybychom použili trunc()
funkce.
Pokud však nepatrně upravíme zlomkové sekundy, uvidíme, že výsledek je zaokrouhlený.
SELECT
round(13.45, 1) AS "13.45",
round(13.44, 1) AS "13.44";
Výsledek:
13:45 | 13,44-------+--------13,5 | 13.4
Je však důležité si uvědomit, že výsledek je zcela závislý na tom, kolik zlomkových sekund zadáte ve druhém argumentu.
Zde je znovu stejný příklad, ale se dvěma desetinnými místy.
SELECT
round(13.45, 2) AS "13.45",
round(13.44, 2) AS "13.44";
Výsledek:
13:45 | 13.44-------+--------13.45 | 13:44
V tomto případě nebylo nic zaokrouhleno, protože jsem uvedl přesný počet desetinných míst, který jsem uvedl.
Přidání zlomků sekund
Nic vám nebrání zadat více zlomkových sekund, než je v původním počtu.
SELECT
round(13.45, 3) AS "13.45",
round(13.44, 3) AS "13.44";
Výsledek:
13:45 | 13,44---------+--------13,450 | 13 440
V tomto případě jednoduše přidá nulu k pravé části zlomkových sekund.
Zde je příklad zadání počtu desetinných míst, když původní číslo nezahrnuje žádné zlomky sekund.
SELECT round(12, 3);
Výsledek:
12 000
Záporná desetinná místa
Zde je to, co se stane, když je druhým argumentem záporná hodnota.
SELECT round(789, -2);
Výsledek:
800
Zde jsou některé další.
SELECT
round(789, -2),
round(789, -1),
round(489, -2),
round(489, -1),
round(489, -3);
Výsledek:
Round() vs Trunc()
V některých případech round()
se může zdát, že funkce funguje podobně jako trunc()
. Ale jsou docela jiné.
round()
funkce zaokrouhlí číslo. Číslo je zaokrouhleno na nejbližší celé číslo nebo na zadaný počet desetinných míst (v závislosti na tom, zda mu zadáte jeden argument nebo dva argumenty).
trunc()
funkce na druhé straně jednoduše zkrátí číslo směrem k nule nebo na zadané desetinné místo. Žádné zaokrouhlování se neprovádí.
Zde je příklad, který demonstruje rozdíl.
SELECT
round(1.49, 1),
trunc(1.49, 1);
Výsledek: