2016-11-04 102 views
1

任何人都可以解釋爲什麼會發生以下情況嗎?爲什麼打印-0.0?

print(-1 * (605 % 11))  #-> 0 
print(-1 * (0.5*1210 % 11)) #-> -0.0 
print(-1 * (0.5*1210) % 11) #-> 0.0 

尤其是-0.0是莫名其妙..

+5

爲什麼不能打印-0.0?這就是當你乘以-1時得到的結果。 – Kevin

+1

步驟操作順序,操作符優先級等 – davedwards

+0

,因爲它的浮點值而不是整數? – Olian04

回答

6
print(-1 * (605 % 11))  #-> 0 

整數算術。這裏沒有驚喜。

​​

這裏是您可能會驚訝的地方。 0.5*1210 % 11評估爲浮點零,然後-1 * 0.0導致爲負零,這是浮點型。它的存在是因爲它使得一些數字算法的邊緣情況更容易實現。

print(-1 * (0.5*1210) % 11) #-> 0.0 

下面是比Python更熟悉浮點的人可能會感到驚訝。 -1 * (0.5*1210)的計算結果爲-605.0,但隨後在-605.0 % 11中,Python將%操作定義爲返回與分母相同符號的結果,而不是分子,因此返回0.0而不是-0.0