2014-04-29 28 views
1

我面臨以下蟒蛇這個問題是這是所有編程語言的一個普遍的錯誤

>>> p=350. 
>>> p-=0.1 
>>> p-=0.1 
>>> print p-349.8 
-5.68434188608e-14 
>>> 

我檢查這個節目多次在Python代碼和我想的print p-349.8 輸出應該有前來0 我也有過在C嘗試這種在其他語言中++,Java和Python ,我想輸出來0.0 請幫助

+4

http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html –

+0

浮點到處都是一樣的。但是,您的特定交互會導致例如「0.0」。 Lisp或Racket,因爲它們完全對待諸如「0.1」之類的文字(即不像浮點),除非您另有告知。 – molbdnilo

回答

0

是的,所有的編程語言處理的基2號,因此難以準確表達浮點數作爲基數爲10。

也許你可以使用Decimal

+0

另一種方法 - 如果事先知道您將要使用的小數位數(例如在財務應用程序中) - 是將小數點位數乘以數字並用Ints進行數學運算。例如在金融工作的便士而不是英鎊。 – Scironic

+0

默認情況下,一些(不可否​​認的)語言使用有理數或十進制浮點數。那些沒有表現出這些特定的錯誤(儘管它們有其他限制)。 – delnan