sql >> Database teknologi >  >> RDS >> MariaDB

MariaDB ROUND() vs FLOOR()

MariaDB har en ROUND() funktion og en FLOOR() funktioner, der ligner hinanden på nogle måder, men ret forskellige på andre måder.

Nedenfor er en hurtig gennemgang af forskellen mellem ROUND() og FLOOR() i MariaDB.

Forskellen

Her er forskellen mellem hver funktion i en nøddeskal:

  • ROUND() runder sit argument til et bestemt antal decimaler.
  • FLOOR() returnerer den største heltalværdi, der ikke er større end dens argument.

Syntaks

Her er syntakserne og definitionerne for hver funktion.

ROUND()

ROUND() funktionen kan bruges på følgende to måder:

ROUND(X)
ROUND(X,D)

ROUND() runder argumentet X til D decimaler. Afrundingsalgoritmen afhænger af datatypen X .

FLOOR()

FLOOR() funktion kan kun bruges med én syntaks:

FLOOR(X)

FLOOR() returnerer den største heltalværdi, der ikke er større end X .

Eksempel på forskellen

Her er en sammenligning for at demonstrere forskellen mellem ROUND() og FLOOR() :

SELECT 
    FLOOR(3.6789),
    ROUND(3.6789);

Resultat:

+---------------+---------------+
| FLOOR(3.6789) | ROUND(3.6789) |
+---------------+---------------+
|             3 |             4 |
+---------------+---------------+

I dette tilfælde er ROUND() funktion rundede tallet op, fordi det næste ciffer (8 ) er større end 5 .

FLOOR() funktion på den anden side returnerede simpelthen den største heltalværdi, der ikke var større end argumentet (3.6789 ).

Andet argument

En anden forskel er, at ROUND() accepterer et valgfrit andet argument, hvorimod FLOOR() ikke.

Det andet argument giver dig mulighed for at angive, hvor mange decimaler du skal afrunde tallet til.

Eksempel

SELECT 
    FLOOR(3.6789),
    ROUND(3.6789, 2);

Resultat:

+---------------+------------------+
| FLOOR(3.6789) | ROUND(3.6789, 2) |
+---------------+------------------+
|             3 |             3.68 |
+---------------+------------------+

Eksempel på samme resultat

Disse funktioner kan nogle gange returnere det samme resultat. Det hele afhænger af værdien af ​​de argumenter, der sendes.

Hvis vi for eksempel placerer et negativt fortegn foran værdierne, får vi det samme resultat:

SELECT 
    FLOOR(-3.6789),
    ROUND(-3.6789);

Resultat:

+----------------+----------------+
| FLOOR(-3.6789) | ROUND(-3.6789) |
+----------------+----------------+
|             -4 |             -4 |
+----------------+----------------+

Dermed ikke sagt, at en negativ værdi altid returnerer det samme resultat - det gør den ikke. Det hele afhænger af de faktiske værdier, der leveres, og afrundingen, der skal finde sted med ROUND() .

Her er et eksempel, hvor negative værdier giver forskellige resultater:

SELECT 
    FLOOR(-3.3739),
    ROUND(-3.3739);

Resultat:

+----------------+----------------+
| FLOOR(-3.3739) | ROUND(-3.3739) |
+----------------+----------------+
|             -4 |             -3 |
+----------------+----------------+

Og her er et eksempel, hvor positive værdier returnerer det samme resultat:

SELECT 
    FLOOR(3.3739),
    ROUND(3.3739);

Resultat:

+---------------+---------------+
| FLOOR(3.3739) | ROUND(3.3739) |
+---------------+---------------+
|             3 |             3 |
+---------------+---------------+

TRUNCATE() Funktion

Begge funktioner er forskellige fra TRUNCATE() funktion, som blot afkorter værdien til et givet antal decimaler.


  1. Vil du gemme PHP-array til MySQL?

  2. MySQL – FOUND_ROWS() Funktion for det samlede antal berørte rækker

  3. Django cache.set() forårsager duplikatnøglefejl

  4. Forstå indekser i MySQL:Anden del