[問題] 請問 python 精度的問題

看板Python作者 (q )時間5年前 (2018/07/26 16:22), 編輯推噓5(505)
留言10則, 5人參與, 5年前最新討論串1/1
我執行 >>> 10 * 0.000001 == 1 * 0.00001 False 應該是python 精度的問題 請問有辦法讓這兩個相等嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.150.128.77 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1532593374.A.B0A.html

07/26 16:34, 5年前 , 1F
10 * 0.000001 - 1 * 0.00001 < sys.float_info.epsilon
07/26 16:34, 1F

07/26 16:36, 5年前 , 2F
round(10*0.000001,10)==round(1*0.00001,10)
07/26 16:36, 2F

07/26 16:37, 5年前 , 3F
Decimal('10')*Decimal('0.000001)==Decimal('1')*Decimal('
07/26 16:37, 3F

07/26 17:53, 5年前 , 4F
推一樓方法 不要直接用等於 這是IEEE 754
07/26 17:53, 4F

07/26 17:54, 5年前 , 5F
一樓的方法好'數學'
07/26 17:54, 5F

07/27 11:26, 5年前 , 6F
用一樓的方法記得加絕對值喔
07/27 11:26, 6F

07/27 11:27, 5年前 , 7F
因為sys.float_info.epsilon>0 所以負數會是True
07/27 11:27, 7F

07/27 11:32, 5年前 , 8F
舉個例子1-2>epsilon>>True 但1!=2 這個結果明顯是誤判
07/27 11:32, 8F

07/27 11:33, 5年前 , 9F
<
07/27 11:33, 9F

07/27 11:34, 5年前 , 10F
更正
07/27 11:34, 10F
文章代碼(AID): #1RMOJUiA (Python)