2

有人可以解释下面的“-5”吗?我对 numpy 有点陌生,但这似乎很奇怪

In [112]: an_int=9

In [113]: an_int/2
Out[113]: 4

In [114]: range(-an_int/2,an_int/2)
Out[114]: [-5, -4, -3, -2, -1, 0, 1, 2, 3]

In [115]: arange(-an_int/2,an_int/2)
Out[115]: array([-5, -4, -3, -2, -1,  0,  1,  2,  3])

In [116]: range(-4,4)
Out[116]: [-4, -3, -2, -1, 0, 1, 2, 3]
4

1 回答 1

7

问题不是麻木的。“问题”是python中的整数除法会降低结果而不是截断为0(如C语言) - 例如-9/2 ,它被解析为(-9)/2(或者(-9)//2如果你使用python3.x)评估为-5. int另一方面,内置函数确实向零截断。换句话说:

a = -9
b = 2
print a//b #-5
print int(float(a)/b) #-4

如果你有兴趣。这是 Guido 的一篇博客文章,讨论了这个有趣的(也许有些争议)的设计决定。

于 2012-09-20T00:26:59.923 回答