看板 Python 關於我們 聯絡資訊
我想請問一下加跟減問題 >>> 0.1 0.10000000000000001 請問為什麼print 0.1到小數第17位的時候會多出個1出來呢 如果0.1=0.10000000000000001 那0.1+0.1應該會變成0.20000000000000002 可是我print出來的值卻又變成0.20000000000000001 而0.1+0.1+0.1-0.3print出來的值又變成 5.5511151231257827e-017 可是我測試過0.1+0.1-0.2或者0.1+0.1+0.1+0.1-0.4卻都還是0 忽然覺得我有很多問題 麻煩利害的大師解答了 感激不盡!! 謝謝... -- 一個人的旅行... http://www.wretch.cc/album/endroll0118 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.205.25.135
monomorium:小數在電腦都是用模擬計算出來的 10/04 15:26
endroll0118:那是跟電腦的作業環境有關係嗎 如果在不同的作業環境 10/04 15:29
endroll0118:跑出來的數值誤差還會是一樣的嗎?? 10/04 15:29
monomorium:軟體的關係 在Python請用decimal模組 10/04 16:15
wenking:我聽到另外一個說法是,因為電腦主要語言為二進制 10/04 22:50
wenking:當他在作浮點數運算時,會有除不盡的問題。是這樣所造成 10/04 22:51
wenking:的誤差值。有些也可能出現 9999... 的現象 10/04 22:53
bizkit:IEEE 754 10/04 23:21
StubbornLin:我好像在Python 2.6的更新裡瞄到有分數可以用? 10/04 23:42