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()
функция, която просто съкращава стойността до определен брой десетични знака.