MariaDB ma funkcję ROUND()
funkcja i FLOOR()
funkcji, które pod pewnymi względami są podobne, ale pod innymi zupełnie inne.
Poniżej znajduje się krótkie podsumowanie różnicy między ROUND()
i FLOOR()
w MariaDB.
Różnica
Oto różnica między każdą funkcją w skrócie:
ROUND()
zaokrągla swój argument do określonej liczby miejsc po przecinku.FLOOR()
zwraca największą liczbę całkowitą nie większą niż jej argument.
Składnia
Oto składnia i definicje każdej funkcji.
ROUND()
ROUND()
funkcja może być używana na dwa sposoby:
ROUND(X)
ROUND(X,D)
ROUND()
zaokrągla argument X
do D
miejsca dziesiętne. Algorytm zaokrąglania zależy od typu danych X
.
FLOOR()
FLOOR()
funkcja może być używana tylko z jedną składnią:
FLOOR(X)
FLOOR()
zwraca największą liczbę całkowitą nie większą niż X
.
Przykład różnicy
Oto porównanie pokazujące różnicę między ROUND()
i FLOOR()
:
SELECT
FLOOR(3.6789),
ROUND(3.6789);
Wynik:
+---------------+---------------+ | FLOOR(3.6789) | ROUND(3.6789) | +---------------+---------------+ | 3 | 4 | +---------------+---------------+
W tym przypadku ROUND()
funkcja zaokrągliła liczbę w górę, ponieważ następna cyfra (8
) jest większe niż 5
.
FLOOR()
z drugiej strony, po prostu zwrócił największą wartość całkowitą nie większą niż argument (3.6789
).
Drugi argument
Kolejną różnicą jest to, że ROUND()
akceptuje opcjonalny drugi argument, podczas gdy FLOOR()
nie.
Drugi argument pozwala określić, do ilu miejsc dziesiętnych należy zaokrąglić liczbę.
Przykład
SELECT
FLOOR(3.6789),
ROUND(3.6789, 2);
Wynik:
+---------------+------------------+ | FLOOR(3.6789) | ROUND(3.6789, 2) | +---------------+------------------+ | 3 | 3.68 | +---------------+------------------+
Przykład tego samego wyniku
Te funkcje mogą czasami zwrócić ten sam wynik. Wszystko zależy od wartości przekazywanych argumentów.
Na przykład, jeśli umieścimy znak minus przed wartościami, otrzymamy ten sam wynik:
SELECT
FLOOR(-3.6789),
ROUND(-3.6789);
Wynik:
+----------------+----------------+ | FLOOR(-3.6789) | ROUND(-3.6789) | +----------------+----------------+ | -4 | -4 | +----------------+----------------+
Nie oznacza to, że wartość ujemna zawsze zwraca ten sam wynik – tak nie jest. Wszystko zależy od rzeczywistych wartości dostarczanych i zaokrąglania, które ma mieć miejsce przez ROUND()
.
Oto przykład, w którym wartości ujemne dają różne wyniki:
SELECT
FLOOR(-3.3739),
ROUND(-3.3739);
Wynik:
+----------------+----------------+ | FLOOR(-3.3739) | ROUND(-3.3739) | +----------------+----------------+ | -4 | -3 | +----------------+----------------+
A oto przykład, w którym wartości dodatnie zwracają ten sam wynik:
SELECT
FLOOR(3.3739),
ROUND(3.3739);
Wynik:
+---------------+---------------+ | FLOOR(3.3739) | ROUND(3.3739) | +---------------+---------------+ | 3 | 3 | +---------------+---------------+
TRUNCATE()
Funkcja
Obie funkcje różnią się od TRUNCATE()
funkcja, która po prostu obcina wartość do określonej liczby miejsc po przecinku.