无法在oracle中获取remainder()函数。以下是输出的两个例子。请让我通过这些示例了解其背后的逻辑,以便我更好地理解。
select remainder(17,3) from dual; // output -1
select remainder(15,6) from dual; // output 3
特别是,为什么remainder(15,6)
自圆(15/6)= 3后不返回-3
?
答案 0 :(得分:1)
REMAINDER是一个相当奇怪的SQL函数,我自己从未使用它。
17 / 3 = 5.66666..
which rounds to 6
17 / 3 = 6 remainder -1
15 / 6 = 2.5
which is rounded to 2 (note: this is NOT using Oracle's default ROUND algorithm!)
15 / 6 = 2 remainder 3
Understanding behavior of remainder() function in Oracle
修改
根据Jonathan的评论,似乎正在使用round
的binary_float / binary_double逻辑,它将舍入到最接近的偶数值。
select 9 / 6, remainder(9,6)
,15 / 6, remainder(15,6)
,21 / 6, remainder(21,6)
,27 / 6, remainder(27,6)
from dual;
1.5 -3
2.5 3
3.5 -3
4.5 3