MariaDB
 sql >> база данни >  >> RDS >> MariaDB

MariaDB ROUND() срещу FLOOR()

MariaDB има ROUND() функция и FLOOR() функции, които са сходни в някои отношения, но доста различни в други.

По-долу е даден кратък преглед на разликата между ROUND() и FLOOR() в MariaDB.

Разликата

Ето разликата между всяка функция накратко:

  • ROUND() закръгля аргумента си до определен брой десетични знака.
  • FLOOR() връща най-голямата целочислена стойност, не по-голяма от неговия аргумент.

Синтаксис

Ето синтаксиса и дефинициите на всяка функция.

ROUND()

ROUND() функцията може да се използва по следните два начина:

ROUND(X)
ROUND(X,D)

ROUND() закръгля аргумента X до D десетични знаци. Алгоритъмът за закръгляване зависи от типа данни на X .

FLOOR()

FLOOR() функцията може да се използва само с един синтаксис:

FLOOR(X)

FLOOR() връща най-голямата целочислена стойност, не по-голяма от X .

Пример за разликата

Ето сравнение, за да демонстрирате разликата между ROUND() и FLOOR() :

SELECT 
    FLOOR(3.6789),
    ROUND(3.6789);

Резултат:

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

В този случай ROUND() функцията закръгли числото нагоре, тъй като следващата цифра (8 ) е по-голямо от 5 .

FLOOR() функция от друга страна, просто връща най-голямата стойност на цяло число, не по-голяма от аргумента (3.6789 ).

Втори аргумент

Друга разлика е, че ROUND() приема незадължителен втори аргумент, докато FLOOR() не.

Вторият аргумент ви позволява да посочите до колко десетични знака да закръглите числото.

Пример

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

Резултат:

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

Пример за същия резултат

Тези функции понякога могат да върнат същия резултат. Всичко зависи от стойността на предаваните аргументи.

Например, ако поставим отрицателен знак пред стойностите, получаваме същия резултат:

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

Резултат:

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

Това не означава, че отрицателната стойност винаги връща един и същ резултат - не. Всичко зависи от предоставените действителни стойности и закръгляването да се извърши чрез ROUND() .

Ето пример, при който отрицателните стойности дават различни резултати:

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

Резултат:

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

И ето пример, при който положителните стойности връщат същия резултат:

SELECT 
    FLOOR(3.3739),
    ROUND(3.3739);

Резултат:

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

TRUNCATE() Функция

И двете функции са различни от TRUNCATE() функция, която просто съкращава стойността до определен брой десетични знака.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как REGEXP_INSTR() работи в MariaDB

  2. Как ACOS() работи в MariaDB

  3. Как CHR() работи в MariaDB

  4. Как CONCAT() работи в MariaDB

  5. MariaDB SESSION_USER() Обяснено