Ludzie, którzy napisali dokumentację (którzy wydają się nie pamiętać niektórych definicji z arytmetyki) sami wydają się być niepewni tego, co napisali. Z jednej strony na początku wyjaśnienia wspominają ROUND
- ale później, gdy podają bardziej formalną definicję, mówią
„Najbliższa liczba całkowita” nie jest formalnie zdefiniowana w arytmetyce i rzeczywiście można używać tej nazwy dla round(x), chyba że część ułamkowa x wynosi dokładnie 0,5, w którym to przypadku „najbliższa liczba całkowita” jest niejednoznaczna i można wybrać użyj "zaokrąglenia w dół" jako własnej definicji "najbliższej liczby całkowitej".
Nie denerwuj się zbytnio takimi niespójnościami w dokumentacji, jeśli możesz. Zobaczysz o wiele więcej.
Jednak :DUŻO gorsze jest to, że zachowanie jest niespójne. Używam Oracle 12.1, a na moim komputerze właśnie próbowałem i otrzymałem
remainder(10, 4) = 2
remainder( 6, 4) = -2
Bez ładu i składu. Dużo lepiej zrobić własny podział, używając FLOOR i tym podobnych.
Edytuj - A może jest jakiś powód; być może używają definicji „najbliższej liczby całkowitej”, aby w przypadku remisu oznaczać najbliższą parzystą liczba całkowita. Nadal daje nieoczekiwane wyniki, najlepiej nie używać funkcji Oracle REMAINDER().