[問題] 大數字取對數(log)問題??

看板Python作者 (也許當時忙著微笑和哭泣)時間4年前 (2020/05/19 11:24), 編輯推噓2(206)
留言8則, 4人參與, 4年前最新討論串1/1
一般來說用math.log2(數字)就能取對數 但是數字太大好像就不太準 像是2**87-1 會出現87 正確來說應該是86.多吧 請問有什麼解決方法呢? 感謝大大 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.141.88.170 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1589858663.A.325.html

05/19 12:22, 4年前 , 1F
要絕對準的話,就是要自己寫?
05/19 12:22, 1F

05/19 13:47, 4年前 , 2F
decimal module
05/19 13:47, 2F

05/19 14:25, 4年前 , 3F
decimal 內沒看到 log2(), 但是有log10() ,轉一下
05/19 14:25, 3F

05/19 14:25, 4年前 , 4F
from decimal import Decimal, getcontext
05/19 14:25, 4F

05/19 14:25, 4年前 , 5F
getcontext().prec = 30
05/19 14:25, 5F

05/19 14:26, 4年前 , 6F
r = Decimal(2**87-1).log10() / Decimal(2).log10()
05/19 14:26, 6F

05/19 14:26, 4年前 , 7F
r 應該就是你要的?
05/19 14:26, 7F

05/19 18:00, 4年前 , 8F
感謝樓上的各位
05/19 18:00, 8F
文章代碼(AID): #1Umr5dCb (Python)