[问题] 如何于除法取到小数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