我正在使用Sql Developer在oracle 11g中运行以下查询。
SELECT remainder(25,10),remainder(35,10) FROM dual;
输出
REMAINDER(25,10) REMAINDER(35,10)
---------------------- ----------------------
5 -5
我可以使用MOD()来获得所需的结果,但我的问题是为什么它返回+5为1而-5为其他?
答案 0 :(得分:7)
根据documentation,REMAINDER(m, n)
定义为
m - (n * X)其中X是最接近m / n的整数
显然,当分割结果在两个数字之间时,Oracle会应用“round to even”:
对于REMAINDER(25, 10)
,你得到
25 / 10 = 2.5 --> nearest integer is 2 (round to even)
25 - (10 * 2) = 5
对于REMAINDER(35, 10)
,你得到
35 / 10 = 3.5 --> nearest integer is 4 (round to even)
35 - (10 * 4) = -5