我可能會錯過一些基本的東西,但考慮到這個解釋器會話:爲什麼-0.0和0.0不一樣?
>>> -0.0 is 0.0
False
>>> 0.0 is 0.0
True
>>> -0.0 # The sign is even retained in the output. Why?
-0.0
>>>
你會認爲,Python解釋器會意識到-0.0
和0.0
是相同的數字。事實上,他們比較爲等於:
>>> -0.0 == 0.0
True
>>>
那麼,爲什麼Python的兩個之間的區別,並生成-0.0
一個全新的對象?它不整數做到這一點:
>>> -0 is 0
True
>>> -0 # Sign is not retained
0
>>>
現在,我意識到,浮點數是一個巨大的與計算機上的問題來源,但這些問題總是針對其準確性。例如:
>>> 1.3 + 0.1
1.4000000000000001
>>>
但是,這不是一個準確性問題,是嗎?我的意思是,我們正在談論這裏的數字的符號,而不是小數點。
我可以重現這一行爲在這兩個的Python 2.7和Python 3.4,所以這不是一個特定版本的問題。
我相信這是IEEE 754浮點表示的一個特性,這意味着它不是特定於Python。 – 2014-11-05 19:04:41
整數溢出可能是更嚴重的「計算機問題的根源」。 – tmyklebu 2014-11-05 22:35:44
爲什麼你使用'is'進行數字比較?您的許多問題與簽名的零無關:嘗試'x = 2.3','y = 2.3',接着'x是y'。然後,爲了好玩,試試'x = 2.3; y = 2.3'(全部在一行上),後面是'x是y'。 – 2014-11-06 12:21:28