对取余计算:a%b
1.当a和b都是正数的时候,Java和python的计算结果是一样的。
2.当a和b至少有一个为负数的时候,Java和python的计算结果就可能不一样了。
那到底是谁的正确呢?
首先,通过试做一些运算,可知Java的结果才是正确的!
那是为什么出现这种现象呢?
原因是Java和python取余计算所采用的公式不同造成的,他们所采取的计算是:
Java: r = a - (a / b) x b
python: r = a - (a / / b) x b
其中r是余数,a是被取余数,b是取余数(哈哈哈哈····借用除法中被除数和除数的说法,不知这种说法可否)
“/ /” 是python才有的运算符,意思是向下取整,例如,当a/b为-3.2的时候,则a//b的结果不是-3而是-4
因为对负数来说,-3>-3.2, -4<3.2, 所以-3.2向下取整的结果是-4
而Java所采用的公式中,当a/b为-3.2的时候,直接转成int类型取整的结果为-3
所以此时,上面两个公式在小括号地方的计算结果出现了不同
这就是Java和Python作负数取余运算时,结果不一样的原因!!
Java和python中的正负数取余计算的区别
最新推荐文章于 2023-01-05 20:10:27 发布