python3中的除法/ (会把int变成float)向下取整//(不会改变int类型) 和 直接舍弃小数,向0截断
1. 为什么不能直接用 a / b
a / b
在 Python 中返回的是 浮点数,比如:print(5 / 2) # 2.5 print(-5 / 2) # -2.5
但 RPN 的定义要求输出是整数。
如果直接用a / b
,得到的是2.5
,不符合题意。
2. //
和 int(a / b)
的区别
//
是地板除 (floor division):
会向下取整,也就是说结果会偏向负无穷。print(5 // 2) # 2 print(-5 // 2) # -3 ← 注意这里
int(a / b)
是向零截断 (truncate toward zero):
直接把小数部分去掉,不管正负。print(int(5 / 2)) # 2 print(int(-5 / 2)) # -2 ← 注意这里
所以,为了符合题目要求(向零截断),要写成:
stack.append(int(a / b))
python 2 和 python 3不一样 python 2 不改变数据类型