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 の整数除算が (C 言語のように) 0 に向かって切り捨てられるのではなく、結果を床に落とすことです。たとえば、 (またはpython3.x を使用している場合は)-9/2 として解析され(-9)/2ます。一方、組み込み関数はゼロに向かって切り捨てます。言い換えると:(-9)//2-5int

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

興味があれば。これは、この興味深い (そしておそらく多少物議を醸す) 設計上の決定について議論している Guido によるブログ投稿です。

于 2012-09-20T00:26:59.923 に答える