sql >> Databasteknik >  >> RDS >> MariaDB

MariaDB ROUND() vs FLOOR()

MariaDB har en ROUND() funktion och en FLOOR() funktioner som är lika på vissa sätt, men ganska olika på andra sätt.

Nedan är en snabb sammanfattning av skillnaden mellan ROUND() och FLOOR() i MariaDB.

Skillnaden

Här är skillnaden mellan varje funktion i ett nötskal:

  • ROUND() avrundar sitt argument till ett visst antal decimaler.
  • FLOOR() returnerar det största heltalsvärdet som inte är större än dess argument.

Syntax

Här är syntaxerna och definitionerna för varje funktion.

ROUND()

ROUND() funktionen kan användas på följande två sätt:

ROUND(X)
ROUND(X,D)

ROUND() avrundar argumentet X till D decimaler. Avrundningsalgoritmen beror på datatypen X .

FLOOR()

FLOOR() funktion kan användas med endast en syntax:

FLOOR(X)

FLOOR() returnerar det största heltalsvärdet som inte är större än X .

Exempel på skillnaden

Här är en jämförelse för att visa skillnaden mellan ROUND() och FLOOR() :

SELECT 
    FLOOR(3.6789),
    ROUND(3.6789);

Resultat:

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

I det här fallet, ROUND() funktionen avrundade siffran uppåt, eftersom nästa siffra (8 ) är större än 5 .

FLOOR() funktion å andra sidan, returnerade helt enkelt det största heltalsvärdet som inte var större än argumentet (3.6789 ).

Andra argumentet

En annan skillnad är att ROUND() accepterar ett valfritt andra argument, medan FLOOR() inte.

Det andra argumentet låter dig ange hur många decimaler du ska avrunda talet till.

Exempel

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

Resultat:

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

Exempel på samma resultat

Dessa funktioner kan ibland returnera samma resultat. Allt beror på värdet av argumenten som skickas.

Om vi ​​till exempel placerar ett negativt tecken framför värdena får vi samma resultat:

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

Resultat:

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

Därmed inte sagt att ett negativt värde alltid ger samma resultat – det gör det inte. Allt beror på de faktiska värdena som tillhandahålls och avrundningen som ska ske med ROUND() .

Här är ett exempel där negativa värden ger olika resultat:

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

Resultat:

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

Och här är ett exempel där positiva värden ger samma resultat:

SELECT 
    FLOOR(3.3739),
    ROUND(3.3739);

Resultat:

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

TRUNCATE() Funktion

Båda funktionerna skiljer sig från TRUNCATE() funktion, som helt enkelt trunkerar värdet till ett givet antal decimaler.


  1. 2 sätt att formatera ett tal med ledande nollor i Oracle

  2. Hur använder man MySQLDB SScursor effektivt?

  3. Python, Ruby och Golang:A Web Service Application Comparison

  4. Bästa datatypen för att lagra valutavärden i en MySQL-databas