debugging mpmath停止处理高精度

mbskvtky  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(119)

我在windows上使用jupyter notebook和anaconda(在几次尝试后重新安装到当前版本)。不知怎么的,mpmath库停止工作了。考虑下面的代码

import mpmath as mp
mp.dps=530
mp.mpf(1) / mp.mpf(6)

字符串
但我得到的结果是

mpf('0.16666666666666666')


我也试过

mp.mpf("1") / mp.mpf("6")


返回相同的结果,并且

mp.nprint(mp.mpf(1) / mp.mpf(6),50)


返回

0.16666666666666665741480812812369549646973609924316


显示模块出了故障
代码出了什么问题?

9udxz4iz

9udxz4iz1#

您没有更改上下文-您只是向mpmath模块本身添加了一个(无用的)dps属性。
让我们在不重命名噱头的情况下进行,以使其更清晰:

>>> import mpmath
>>> mpmath.dps = 530
>>> mpmath.mpf(1) / mpmath.mpf(6)
mpf('0.16666666666666666')

字符串
相反,您需要在mpmath模块的mp上下文属性 * 上设置dps

>>> import mpmath
>>> mpmath.mp.dps = 530 # note that this is different!
>>> mpmath.mpf(1) / mpmath.mpf(6)
mpf('0.16666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666675')


出于这个原因,您永远不应该执行import mpmath as mp--这只会让您混淆(正如您所遇到的)模块和模块的上下文对象。

相关问题