sql >> Databáze >  >> RDS >> MariaDB

MariaDB ROUND() vs. FLOOR()

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.


  1. Jak funguje TIMESTAMPDIFF() v MariaDB

  2. Jak Floor() funguje v PostgreSQL

  3. MySQL:jak provést zabezpečení na úrovni řádků (jako je virtuální privátní databáze Oracle)?

  4. Jak mohu použít funkci CONCAT v SQL Server 2008 R2?