Python入门问题:整数反转代码中/运算得到浮点数为何按整数处理
问题解答
核心原因
你观察到的现象是Python不同版本的/运算符规则差异导致的:
- 你的代码能正常运行,说明你使用的是 Python 2.x 版本:该版本中如果
/两侧都是整数,默认执行整数除法,会直接舍弃小数部分返回整数结果,所以45/10得到的本身就是整数4,不存在把浮点数4.5当作4处理的情况。 - 如果你把代码放到Python 3.x环境运行,结果就会出错:Python 3中
/统一返回浮点数,45/10得到的确实是4.5,后续循环会持续执行直到浮点数精度溢出,最终返回错误的结果。
兼容优化方案
如果要实现跨版本的整数反转功能,把/替换为显式的地板除运算符//即可,该运算符在Python 2.x和3.x中对正整数都会返回截断小数后的整数结果:
def intreverse(n): m = 0 while n > 0: d, n = n % 10, n // 10 m = 10 * m + d return m print(intreverse(45))
内容的提问来源于stack exchange,提问作者Siddharth k
相关产品推荐
相关产品推荐

