如何覆盖sympy.core.numbers.Float的__str__方法?

Ter*_*non 5 python sympy

我试图通过使用不同的数字层次结构来克服Python的浮点子类的缺陷.但是以下代码:

from sympy import *
import sympy.core.numbers

f = 1.123456789
n = N(f, 8)

print n
print type(n)

sympy.core.numbers.Float.__str__ = lambda f: "{:.8f}".format(f)

print n
Run Code Online (Sandbox Code Playgroud)

产生错误:

AttributeError:'module'对象没有属性'numbers'

我怎么能克服这个?

Ste*_*uch 3

这可以满足您的需要:

代码:

from sympy.core.numbers import Float
Float.__str__ = lambda f: "{:.8f}".format(float(f))
Run Code Online (Sandbox Code Playgroud)

测试代码:

from sympy import N
from sympy.core.numbers import Float

f = 1.123456789
n = N(f, 8)

Float.__str__ = lambda f: "{:.8f}".format(float(f))

print n
Run Code Online (Sandbox Code Playgroud)

结果:

1.12345679
Run Code Online (Sandbox Code Playgroud)