PRB: MOD Function w/ Negative Number May Give Different Answer (130128)
The information in this article applies to:
- Microsoft Visual FoxPro for Windows 3.0
This article was previously published under Q130128 SYMPTOMS
If negative numbers are used with the MOD function, it is possible that the
answer returned will be different from the answer given by other
applications that also incorporate a MOD function.
CAUSE
The correct definition of MOD is as follows:
x MOD y = z where z + y * int(x/y) = x
z = x - y * int(x/y)
Therefore:
x MOD y = x - y * int(x/y)
In the Microsoft MOD function, we do the same as above except we use the
FLOOR() function instead of INT() in order to be backward compatible with
other products that use the FLOOR() function.
RESOLUTION
Below are two functions. The first function (FLOORMOD) implements the MOD
with a FLOOR() function, and the second function (INTMOD) implements the
MOD with an INT() function. Sometimes you may want to use the INTMOD
function.
**** MOD with FLOOR() ****
FUNCTION FLOORMOD
PARAMETER x,y
z = x - FLOOR(x/y)*y
RETURN z
**************************
**** MOD with INT() ******
FUNCTION INTMOD
PARAMETER x,y
z = x - INT(x/y)*y
RETURN z
**************************
STATUS
This behavior is by design.
Modification Type: | Major | Last Reviewed: | 2/9/2000 |
---|
Keywords: | kbcode KB130128 |
---|
|