mod () в PL / SQL возвращает неожиданное значение - PullRequest
0 голосов
/ 19 ноября 2018

В PL / SQL MOD() возвращает некоторые неожиданные значения. MOD(23,2), который, как ожидается, вернет 1 на самом деле возвращает 0.

MOD(29,2) также возвращает 0, я думаю, проблема в том, что он использует значения с плавающей точкой.

Есть ли альтернатива MOD()?

1 Ответ

0 голосов
/ 20 ноября 2018

Альтернатива?

Мод:

x - y * floor(x/y)

так:

23 - 2 * 11 = 1 --(23/2 = 11,5 --> 'round down' = 11)
29 - 2 * 14 = 1 --(29/2 = 14,5 --> 'round down' = 14)

Полезно знать:

Функция для'round up' - это CEIL, но он генерирует целое число.

Функция для округления в меньшую сторону - FLOOR, но она также генерирует целое число.

Функция для 'округления до ближайшего' -ROUND, и это позволяет вам указать количество десятичных разрядов (dp).

Обратите внимание, что CEIL округляет до целого числа;чтобы округлить до 2 dp, вам нужно умножить на 100, использовать CEIL и разделить на 100.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...