MariaDB má ROUND()
funkce a FLOOR()
funkce, které jsou v některých ohledech podobné, ale v jiných zcela odlišné.
Níže je stručný přehled rozdílů mezi ROUND()
a FLOOR()
v MariaDB.
Rozdíl
Zde je v kostce rozdíl mezi jednotlivými funkcemi:
ROUND()
zaokrouhlí svůj argument na zadaný počet desetinných míst.FLOOR()
vrátí největší celočíselnou hodnotu, která není větší než jeho argument.
Syntaxe
Zde jsou syntaxe a definice jednotlivých funkcí.
ROUND()
ROUND()
funkci lze použít následujícími dvěma způsoby:
ROUND(X)
ROUND(X,D)
ROUND()
zaokrouhlí argument X
na D
desetinná místa. Algoritmus zaokrouhlování závisí na datovém typu X
.
FLOOR()
FLOOR()
funkci lze použít pouze s jednou syntaxí:
FLOOR(X)
FLOOR()
vrátí největší celočíselnou hodnotu ne větší než X
.
Příklad rozdílu
Zde je srovnání, které ukazuje rozdíl mezi ROUND()
a FLOOR()
:
SELECT
FLOOR(3.6789),
ROUND(3.6789);
Výsledek:
+---------------+---------------+ | FLOOR(3.6789) | ROUND(3.6789) | +---------------+---------------+ | 3 | 4 | +---------------+---------------+
V tomto případě ROUND()
funkce zaokrouhlí číslo nahoru, protože další číslice (8
) je větší než 5
.
FLOOR()
funkce na druhé straně jednoduše vrátila největší celočíselnou hodnotu, která není větší než argument (3.6789
).
Druhý argument
Dalším rozdílem je, že ROUND()
přijímá volitelný druhý argument, zatímco FLOOR()
ne.
Druhý argument vám umožňuje určit, na kolik desetinných míst se má číslo zaokrouhlit.
Příklad
SELECT
FLOOR(3.6789),
ROUND(3.6789, 2);
Výsledek:
+---------------+------------------+ | FLOOR(3.6789) | ROUND(3.6789, 2) | +---------------+------------------+ | 3 | 3.68 | +---------------+------------------+
Příklad stejného výsledku
Tyto funkce mohou někdy vrátit stejný výsledek. Vše závisí na hodnotě předávaných argumentů.
Pokud například umístíme před hodnoty záporné znaménko, dostaneme stejný výsledek:
SELECT
FLOOR(-3.6789),
ROUND(-3.6789);
Výsledek:
+----------------+----------------+ | FLOOR(-3.6789) | ROUND(-3.6789) | +----------------+----------------+ | -4 | -4 | +----------------+----------------+
To neznamená, že záporná hodnota vždy vrátí stejný výsledek – není tomu tak. Vše závisí na skutečných poskytnutých hodnotách a zaokrouhlení, které se provede pomocí ROUND()
.
Zde je příklad, kdy záporné hodnoty vedou k různým výsledkům:
SELECT
FLOOR(-3.3739),
ROUND(-3.3739);
Výsledek:
+----------------+----------------+ | FLOOR(-3.3739) | ROUND(-3.3739) | +----------------+----------------+ | -4 | -3 | +----------------+----------------+
A zde je příklad, kdy kladné hodnoty vrátí stejný výsledek:
SELECT
FLOOR(3.3739),
ROUND(3.3739);
Výsledek:
+---------------+---------------+ | FLOOR(3.3739) | ROUND(3.3739) | +---------------+---------------+ | 3 | 3 | +---------------+---------------+
TRUNCATE()
Funkce
Obě funkce se liší od TRUNCATE()
funkce, která jednoduše zkrátí hodnotu na daný počet desetinných míst.