python2和python3对于求两个量之间的百分比差的非常简单的数学操作,似乎得到了不同的答案。在
例如:
# Python 2.7.10
>>> def percent_difference(qty1, qty2):
... diff = max(qty1, qty2) - min(qty1, qty2)
... print(diff)
... percent = diff / ( (qty1 + qty2) / 2)
... print(percent)
...
>>> percent_difference(1, 2)
1
1
# Python 3.6.2
>>> def percent_difference(qty1, qty2):
... diff = max(qty1, qty2) - min(qty1, qty2)
... print(diff)
... percent = diff / ( (qty1 + qty2) / 2)
... print(percent)
...
>>> percent_difference(1, 2)
1
0.6666666666666666
这是怎么回事?在
(Python3是正确的)
Python2
和Python3
对整数的div操作处理不同。在在
python3
中,div操作将对整数和浮点进行相同的处理:在
^{pr2}$python2
中,如果两个操作数都是整数,则它将截断浮点后面的数字:您需要告诉Python您需要float输出。 尝试
percent_difference(1.0, 2.0)
Python3更改了
/
运算符的行为。它过去依赖于所使用的类型(即integer / integer
是整数除法,如果其中一个操作数是float,则得到float除法)。在Python增强建议PEP-0238中解释了更改的基本原理:
相关问题 更多 >
编程相关推荐