MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

MariaDB ROUND() contre TRUNCATE()

MariaDB a un ROUND() fonction et un TRUNCATE() fonction qui peut retourner les mêmes résultats ou des résultats différents, selon la valeur exacte de leurs arguments.

Comme les noms de fonction le suggèrent, ROUND() tours le nombre et TRUNCATE() tronque le nombre. Tronquer un nombre le coupe simplement sans effectuer d'arrondi.

Vous trouverez ci-dessous un bref aperçu de la différence entre ROUND() et TRUNCATE() dans MariaDB.

La différence

Voici la différence entre chaque fonction en quelques mots :

  • ROUND() tours son argument à un nombre spécifié de décimales. Cela entraînera parfois l'arrondi du résultat, et parfois non.
  • TRUNCATE() simplement tronque son argument à un nombre spécifié de décimales. Aucun arrondi n'est effectué.

Syntaxe et définitions

Voici d'abord les syntaxes et les définitions de chaque fonction.

ROUND()

Le ROUND() La fonction peut être utilisée des deux manières suivantes :

ROUND(X)
ROUND(X,D)

ROUND() arrondit l'argument X à D décimales. L'algorithme d'arrondi dépend du type de données de X .

TRUNCATE()

Le TRUNCATE() fonction peut être utilisée avec une seule syntaxe :

TRUNCATE(X,D)

TRUNCATE() renvoie le nombre X , tronqué en D décimales.

Exemple

Voici une comparaison pour démontrer la différence entre ROUND() et TRUNCATE() :

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

Résultat :

+---------------------+------------------+
| TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) |
+---------------------+------------------+
|                3.67 |             3.68 |
+---------------------+------------------+

Dans ce cas, le ROUND() fonction arrondit le nombre vers le haut, car le chiffre suivant (8 ) est supérieur à 5 .

Le TRUNCATE() d'autre part, tronque simplement le nombre à la décimale spécifiée. TRUNCATE() ne fait aucun arrondi. Il coupe simplement le nombre à l'endroit spécifié.

Les deux fonctions acceptent une valeur négative pour la décimale, et la même logique respective s'applique :

SELECT 
    TRUNCATE(36789, -2),
    ROUND(36789, -2);

Résultat :

+---------------------+------------------+
| TRUNCATE(36789, -2) | ROUND(36789, -2) |
+---------------------+------------------+
|               36700 |            36800 |
+---------------------+------------------+

Même résultat

Les deux fonctions peuvent parfois retourner le même résultat. Tout dépend de la valeur des arguments passés.

Voici un exemple où ils renvoient tous les deux le même résultat :

SELECT 
    TRUNCATE(3.6749, 2),
    ROUND(3.6749, 2);

Résultat :

+---------------------+------------------+
| TRUNCATE(3.6749, 2) | ROUND(3.6749, 2) |
+---------------------+------------------+
|                3.67 |             3.67 |
+---------------------+------------------+

Dans ce cas, ROUND() n'a pas arrondi le nombre, car le chiffre suivant (4 ) était inférieur à 5 . Par conséquent, les deux résultats sont identiques.

Le FLOOR() Fonction

Les deux fonctions sont différentes de FLOOR() fonction, qui renvoie la plus grande valeur entière non supérieure à son argument. FLOOR() n'accepte pas un deuxième argument comme ROUND() et TRUNCATE() faire (il ne renvoie jamais qu'un entier de toute façon).