函數 MOD 與 REMAINDER 均返回兩數相除所得的餘數。它們的差異在於 MOD 在其算法中使用函數 FLOOR,而 REMAINDER 使用函數 ROUND。此差異會影響結果。例如,呼叫 MOD (34.5, 3) 會傳回 1.5。呼叫 REMAINDER (34.5, 3) 會傳回 -1.5。對於 REMAINDER,n 不能等於零。
這兩個函數的公式為:
MOD (m, n) = SIGN (m) * (ABS(m) - (ABS (n) * FLOOR(ABS (m) / ABS (n))))
REMAINDER (m,n) = m - (n*ROUND (m/n)
您可以查看下表來瞭解這兩個函數可能產生的差異:
如果 m= | 且 n= | MOD (m,n) 傳回 | REMAINDER (m,n) 傳回 |
---|---|---|---|
11 | 4 | 3 | -1 |
11 | -4 | 3 | -1 |
-11 | 4 | -3 | 1 |
-11 | -4 | -3 | 1 |