W MySQL funkcja ROUND()
funkcja pozwala zaokrąglić liczbę w górę lub w dół do określonej liczby miejsc po przecinku.
Działa to tak, że podajesz liczbę jako argument i masz możliwość wyboru, do ilu miejsc po przecinku chcesz zaokrąglić liczbę. Jeśli nie określisz liczby miejsc dziesiętnych, wynik nie będzie zawierał miejsc dziesiętnych.
Składnia
Tej funkcji można używać na jeden z następujących sposobów:
ROUND(X) ROUND(X,D)
Gdzie X
to liczba i D
to liczba miejsc dziesiętnych, do których ma być zaokrąglona. Jeśli pominiesz D
, liczba zostanie zaokrąglona do zera miejsc po przecinku.
Również D
może być ujemna. Daje to w wyniku D
cyfry po przecinku wartości X
stać się zerem.
Przykład 1 – użycie jednego argumentu
Oto podstawowy przykład pokazujący, co się dzieje, gdy nie podamy drugiego argumentu.
SELECT ROUND(1.49) Result;
Wynik:
+--------+ | Result | +--------+ | 1 | +--------+
W tym przypadku liczba jest zaokrąglana w dół do najbliższej liczby całkowitej.
Jeśli zwiększymy część ułamkową, dzieje się tak:
SELECT ROUND(1.50) Result;
Wynik:
+--------+ | Result | +--------+ | 2 | +--------+
W tym przypadku liczba jest zaokrąglana w górę.
Przykład 2 – użycie dwóch argumentów
Oto, jak możemy użyć drugiego argumentu do określenia miejsc dziesiętnych, do których należy zaokrąglić liczbę.
SELECT ROUND(1.234, 2) Result;
Wynik:
+--------+ | Result | +--------+ | 1.23 | +--------+
A oto, co się stanie, gdy zwiększę ostatnią cyfrę do 5:
SELECT ROUND(1.235, 2) Result;
Wynik:
+--------+ | Result | +--------+ | 1.24 | +--------+
Oczywiście moglibyśmy użyć znacznie więcej miejsc po przecinku. Na przykład możemy skrócić wiele miejsc po przecinku.
SELECT ROUND(1.23456789123456789, 8) Result;
Wynik:
+------------+ | Result | +------------+ | 1.23456789 | +------------+
Lub możemy zwiększyć liczbę miejsc po przecinku.
SELECT ROUND(1.234, 8) Result;
Wynik:
+------------+ | Result | +------------+ | 1.23400000 | +------------+
Przykład 3 – użycie wartości ujemnej w drugim argumencie
Oto jak możemy użyć wartości ujemnej drugiego argumentu, aby spowodować zaokrąglenie części nieułamkowej do zera.
SELECT ROUND(123.456, -1) Result;
Wynik:
+--------+ | Result | +--------+ | 120 | +--------+
A oto jak to się zaokrągla, jeśli zwiększymy 3
do 5
lub więcej.
SELECT ROUND(125.456, -1) Result;
Wynik:
+--------+ | Result | +--------+ | 130 | +--------+
Przykład 4 – Zaokrąglanie liczb ujemnych a liczb dodatnich
Jak widać w poprzednich przykładach, podczas używania liczb dodatnich, wartość z częścią ułamkową 0,5 lub większą jest zaokrąglana w górę do następnej liczby całkowitej.
Jednak w przypadku liczb ujemnych takie wartości są zaokrąglane w dół .
SELECT ROUND(1.50) Positive, ROUND(-1.50) Negative;
Wynik:
+----------+----------+ | Positive | Negative | +----------+----------+ | 2 | -2 | +----------+----------+
Zaokrąglanie przybliżonych wartości
Powyższa zasada zaokrąglania dotyczy tylko liczb o dokładnej wartości. W przypadku liczb przybliżonych wynik zależy od biblioteki C. Dokumentacja MySQL mówi o liczbach przybliżonych:
W wielu systemach oznacza to, że ROUND()
używa zasady „zaokrąglaj do najbliższej parzystej”:wartość z częścią ułamkową dokładnie w połowie między dwiema liczbami całkowitymi jest zaokrąglana do najbliższej parzystej liczby całkowitej.
A oto przykład użyty na tej stronie:
SELECT ROUND(2.5), ROUND(25E-1);
Wynik:
+------------+--------------+ | ROUND(2.5) | ROUND(25E-1) | +------------+--------------+ | 3 | 2 | +------------+--------------+