为什么在oracle中剩余部分(25,10)为5时,余数(35,10)为-5?

时间:2015-04-16 10:48:20

标签: sql oracle oracle11g rounding

我正在使用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为其他?

1 个答案:

答案 0 :(得分:7)

根据documentationREMAINDER(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