所以這只是浪費一對夫婦在調試礦井小時..浮點數到整數轉換在Python行事怪異超級
a,b = 32980.642295,32630.642295
print a-b
print int(a-b)
print int(a) - int(b)
輸出:
350.0
349
350
能有人向我解釋是怎麼回事上?爲什麼350.0的int不是350?我認爲Python是做一些奇怪的東西,在轉換爲int之前鑄造和b ..
編輯/更新:
x = a-b
值存儲在X現在349.99999999999636不350.0
這可能有助於未來的人來到
我搜索了一下,發現了什麼(我認爲)是問題。它不是我的打印版本,因爲我將值存儲在變量中並稍後訪問它,但它處理浮點數學的方式。我只是在這裏用例子來說明我的壞處。 這有助於我的理解https://stackoverflow.com/questions/588004/is-floating-point-math-broken# 如果我使x = ab,然後檢查x,它會給我349.99999999999636 –
它使得沒有不管你直接使用'ab'還是將它存儲在一個變量中,都是不同的。計算出的值完全相同。你的輸出爲'350.0'的原因已經解釋過了:在Python 2中'print'將顯示值顯示爲12位有效數字。無論您是「打印a-b」還是「打印x」,無所謂。 –