mpmath
声称支持“任意精度浮点算术”。
但是 。 。 。
>>> import mpmath
>>> 1 + mpmath.erf(-5.921)
mpf('1.1102230246251565e-16')
>>> 1 + mpmath.erf(-5.922) # I expect a smaller positive number here.
mpf('0.0')
我想念什么吗?还是这是
mpmath
的基本限制?@jonrsharpe建议问题在于我已向
float
提交了erf
。但是,以下代码显示这不是问题:>>> 1 + mpmath.erf(mpmath.mpf('-5.922'))
mpf('0.0')
最佳答案
在此特定情况下,此问题与mpmath
的global prec
ision setting太低有关。 prec
的默认值为
>>> mpmath.mp.prec
53
当我将其设置为
100
时,得到的是我期望的结果:>>> 1 + mpmath.erf(-5.922)
mpf('5.5236667058718205581661131647751e-17')
在这种情况下,速度差异并不明显,但是请注意,提高精度通常会增加计算结果所需的时间。
关于python - 我是否遇到过对mpmath浮点精度的限制?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32896772/