[問題] 一個計算誤差的問題

看板Python作者 (DD)時間16年前 (2008/10/04 15:25), 編輯推噓4(406)
留言10則, 5人參與, 最新討論串1/1
我想請問一下加跟減問題 >>> 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

10/04 15:26, , 1F
小數在電腦都是用模擬計算出來的
10/04 15:26, 1F

10/04 15:29, , 2F
那是跟電腦的作業環境有關係嗎 如果在不同的作業環境
10/04 15:29, 2F

10/04 15:29, , 3F
跑出來的數值誤差還會是一樣的嗎??
10/04 15:29, 3F

10/04 16:15, , 4F
軟體的關係 在Python請用decimal模組
10/04 16:15, 4F

10/04 22:50, , 5F
我聽到另外一個說法是,因為電腦主要語言為二進制
10/04 22:50, 5F

10/04 22:51, , 6F
當他在作浮點數運算時,會有除不盡的問題。是這樣所造成
10/04 22:51, 6F

10/04 22:53, , 7F
的誤差值。有些也可能出現 9999... 的現象
10/04 22:53, 7F

10/04 23:21, , 8F
IEEE 754
10/04 23:21, 8F

10/04 23:42, , 9F
我好像在Python 2.6的更新裡瞄到有分數可以用?
10/04 23:42, 9F

文章代碼(AID): #18vnfcHV (Python)
文章代碼(AID): #18vnfcHV (Python)