作者endroll0118 (DD)
看板Python
標題[問題] 一個計算誤差的問題
時間Sat Oct 4 15:25:22 2008
我想請問一下加跟減問題
>>> 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