我试图将一组从-100到0到10-100的数字标准化,但遇到了一些问题,我发现即使没有任何变量,这也不能以我期望的方式进行评估:
>>> (20-10) / (100-10)
0
浮动分割也不起作用:
>>> float((20-10) / (100-10))
0.0
如果分割的任何一边被抛到一个浮球上,它将起作用:
>>> (20-10) / float((100-10))
0.1111111111111111
第一个例子中的每一边都是一个整数,这意味着最终的答案将被转换成一个整数。因为0.111小于0.5,它将被舍入为0。在我看来这是不透明的,但我想就是这样。
怎么解释?
你是putting Integers in so Python is giving you an integer back:
如果在之后将其转换为浮点数,则舍入操作已经完成,换句话说,0整数将始终变为0浮点数。
如果您在分区的任何一边使用float,那么Python将给出您期望的答案。
所以在你的情况下:
您使用的是Python2.x,其中整数除法将被截断,而不是变成浮点数。
你应该做一个
float
:或者
from __future__ import division
,强制/
采用Python 3.x的行为,该行为总是返回一个浮点数。在除法之前你需要把它改成浮点数。即:
相关问题 更多 >
编程相关推荐