VB6 Mod函数给出带负值的错误值

时间:2015-07-02 04:26:15

标签: vb6 modulo

我在vb6中的脚本中有一个失败的步骤。代码如下

output = ((azmnum + steps ) mod 16777216)

函数中的变量值

-850344 = (5184326 + -6034670) mod 16777216)

所有变量都是长数字。我将这些值输入(python和excel)的所有其他程序返回15926872.我无法弄清楚为什么模数被忽略。

1 个答案:

答案 0 :(得分:2)

mod在所有语言中都不相同,特别是对于负数。 VB6(以及其他编译器的整个负载,如C,C ++,C#,Java)采用Fortran解释,这是除法后的余数。在数学上,如果数字是负数,这是错误的解释。你拥有的是

5184326 + -6034670 = -850344
-850344 mod 16777216 = -850344 

Python和excel采用模数的正确解释,结果总是正数。这需要额外的步骤,即

-850344 + 16777216 = 15926872