3

これを行う方法はありますか?たとえば、次のコードでは精度が失われます。

>>> from sympy import *
>>> from sympy.mpmath import *
>>> mp.dps = 50
>>> a = mpf('1.0')/mpf('3.0')
>>> a
mpf('0.33333333333333333333333333333333333333333333333333311')
>>> b = Float(a,50)
>>> b
0.33333333333333331482961625624739099293947219848633
4

2 に答える 2

2

sympify(a)正しいことをします。Float(a)も動作するはずですが、バグがあるようです。

于 2016-05-09T17:30:57.307 に答える
2

最初に文字列に変換するとうまくいくようです:

>>> from sympy import *
>>> from sympy.mpmath import *
>>> mp.dps = 50
>>> a = mpf('1.0')/mpf('3.0')
>>> a
mpf('0.33333333333333333333333333333333333333333333333333311')
>>> b = Float(a,50)
>>> b
0.33333333333333331482961625624739099293947219848633
>>> b = Float(str(a),50)
>>> b
0.33333333333333333333333333333333333333333333333333
于 2016-05-06T21:03:37.430 に答える