【问题标题】:Why remainder(35,10) is -5 when remainder(25,10) is 5 in oracle?为什么当剩余(25,10)在oracle中为5时,剩余(35,10)为-5?
【发布时间】:2015-04-16 10:48:20
【问题描述】:

我正在使用 Sql Developer 在 oracle 11g 中运行以下查询。

SELECT remainder(25,10),remainder(35,10) FROM dual;

输出

REMAINDER(25,10)       REMAINDER(35,10)       
---------------------- ---------------------- 
5                      -5                     

我可以使用 MOD() 来获得所需的结果,但我的问题是为什么它返回一个 +5 而另一个返回 -5?

【问题讨论】:

    标签: sql oracle oracle11g rounding


    【解决方案1】:

    根据documentationREMAINDER(m, n)定义为

    m - (n * X) 其中 X 是最接近 m / n 的整数

    显然,当除法的结果在两个数字的中间时,Oracle 应用“舍入到偶数”:

    对于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
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-28
    • 2020-03-03
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2019-06-09
    相关资源
    最近更新 更多