MariaDB ma FLOOR()
funkcja i TRUNCATE()
funkcja, która może zwrócić te same wyniki lub różne wyniki, w zależności od dokładnej wartości ich argumentów.
Poniżej znajduje się krótkie podsumowanie różnicy między FLOOR()
i TRUNCATE()
w MariaDB.
Różnica
Oto różnica między każdą funkcją w skrócie:
FLOOR()
zwraca największą liczbę całkowitą nie większą niż jej argument.TRUNCATE()
obcina swój argument do określonej liczby miejsc dziesiętnych.
Składnia
Po pierwsze, oto składnia każdej funkcji.
FLOOR()
Składnia FLOOR()
idzie tak:
FLOOR(X)
Zwraca największą liczbę całkowitą nie większą niż X
.
TRUNCATE()
Składnia TRUNCATE()
idzie tak:
TRUNCATE(X,D)
TRUNCATE()
zwraca liczbę X
, obcięte do D
miejsca po przecinku.
Przykład
Oto porównanie pokazujące różnicę między FLOOR()
i TRUNCATE()
:
SELECT
FLOOR(-3.6789),
TRUNCATE(-3.6789, 0);
Wynik:
+----------------+----------------------+ | FLOOR(-3.6789) | TRUNCATE(-3.6789, 0) | +----------------+----------------------+ | -4 | -3 | +----------------+----------------------+
W tym przypadku liczba jest wartością ujemną, a wynik każdej funkcji jest inny.
FLOOR()
zwrócił największą liczbę całkowitą (-4
) wartość nie większa niż jej argument.TRUNCATE()
z drugiej strony, po prostu skrócił liczbę w określonym miejscu dziesiętnym.
Ten sam wynik
Obie funkcje mogą czasami zwrócić ten sam wynik. Wszystko zależy od wartości przekazywanych argumentów.
Jeśli zmienimy liczby na wartości dodatnie, obie funkcje zwrócą ten sam wynik:
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 0);
Wynik:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 0) | +---------------+---------------------+ | 3 | 3 | +---------------+---------------------+
Drugi argument
Inną oczywistą różnicą między tymi dwiema funkcjami jest to, że TRUNCATE()
akceptuje/wymaga drugiego argumentu. Może to skutkować wynikiem zawierającym część ułamkową.
FLOOR()
jednak zwraca tylko liczbę całkowitą, więc żadna część ułamkowa nigdy nie jest zwracana.
Przykład
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 2);
Wynik:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 2) | +---------------+---------------------+ | 3 | 3.67 | +---------------+---------------------+
ROUND()
Funkcja
Obie funkcje różnią się od ROUND()
funkcja, która zaokrągla swój argument do określonej liczby miejsc po przecinku.