根据用于其余Oracle文档(N2,N1)函数( https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions133.htm ),余数(N2,N1)函数的计算结果为= N2 - N1 * N,其中N = ROUND(N2 / N1)并且n1 = 0!
所以,我希望余数(10,4)返回-2使用计算所述剩余的上述记录方法,如下所示:
REMAINDER(10,4)
=10 - 4 * N where N = ROUND(10/4)
=10 - 4 * 3 since ROUND(10/4) = 3
=10 - 12
=-2
但是,在运行中的Oracle 10g,11g和12c的剩余部分(10,4)返回2而不是-2。
可有人请解释为什么剩余(10,4)不被评估为每甲骨文如何评估剩余的记录方法?
其他信息:此行为发生每隔N2,其中N2是N1 / 2的倍数,可以通过运行下面的SQL每个余数函数值应与它旁边的值进行验证。 但它只是相匹配N2的所有其他价值。 运行SQL:
select
remainder(2,4), 2-4*round(2/4),--OUTPUT:2, -2
remainder(6,4),6-4*round(6/4), --OUTPUT: -2, -2
remainder(10,4),10-4*round(10/4),--OUTPUT: 2, -2
remainder(14,4),14-4*round(14/4)--OUTPUT: -2, -2
from dual