-
最近刷leetcode 7.整数反转
-
发现取余计算如果遇见负数,是很少遇见的情况,但是在实际编程过程中是很容易因为疏忽或者config中配置错误出现,负数取余的情况,所以要了解如此计算后会发生什么情况,加快刷题和debug速度
-
python和C/C++/JAVA在商为负数的除法处理上有两种标准,在python中,商的小数部分进位,而在C/C++/JAVA中,商的小数部分被舍弃
-
因为做测试用的是python,没想到这门语言和C++ JAVA等不一样。可能是为了计算效率做的改进
class Solution {
public:
int reverse(int x) {
long ret = 0;
while(x)
{
ret *= 10;
ret += x % 10;
x /= 10;
}
return ret > 2147483647 || ret < -2147483648 ? 0 : ret;
// 注意,这种写法在python上应该不好用,二者对于负数的取余不一样
}
};
错误代码
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
ret = 0
while(x):
ret = ret * 10 + x % 10
x = x / 10
return ret
// 由于二者对于取余运算的不同,同样的写法,放在CPP 和 python 中,就完全不一样了