[問題] 如何於除法取到小數42位數?

作者: doun (嚕啦嚕啦勒)   2018-02-11 11:53:13
python內建型別decimal看說明最多可以存到小數後17位,
測試過,十七位後的數字都會是亂數
在這樣的情況下該怎麼取得17位以後的精確數字呢?
我使用的實驗數字是
Decimal(156/283)
計算機算的答案:
0.55123674911660777385
python的答案:
0.55123674911660780484
作者: Sunal (SSSSSSSSSSSSSSSSSSSSSSS)   2018-02-11 12:15:00
https://docs.python.org/2/library/decimal.htmlDecimal(156) / Decimal(283)Decimal('0.5512367491166077738515901060')小數後17位是計算機float 的限制
作者: seLain (建築的永恆之道)   2018-02-11 12:17:00
試試看用 getcontext().prec = 42 指定 precision ?
作者: Sunal (SSSSSSSSSSSSSSSSSSSSSSS)   2018-02-11 12:18:00
the decimal module has a user alterable precision (defaulting to 28 places)getcontext().prec = 42
作者: kenduest (小州)   2018-02-11 12:19:00
是要這樣用 Decimal(156) / Decimal(283)啊,真快,推文時候已經前面有人回了
作者: Sunal (SSSSSSSSSSSSSSSSSSSSSSS)   2018-02-11 12:21:00
其實文件都有..XD (看文件是個好習慣)
作者: vfgce (小兵)   2018-02-12 13:56:00
另外一個解法,使用sympy..from sympy import S;S('156/283').n(30)n()可以設定要的精確度............
作者: ar54971   2018-03-06 03:41:00

Links booklink

Contact Us: admin [ a t ] ucptt.com