我想将 numpy float 转换为 sympy 并告诉 sympy 它是精确的(例如,它在我指定的小数后面有无限个 0)。我试过了:
from sympy import Rational, Float
num = "52.70517376823048"
num_sympy = Rational(num)
num_sympy.evalf(100)
>>> 52.70517376823048
这不是我想要的,除非 sympy 隐藏了尾随的零。我如何测试,是否有更好的方法来告诉 sympy 数字是准确的?
如果您有定点而不是浮点值,则可以使用 builtin
Decimal
或将其重写为 SymPy Rational
>>> Decimal("52.70517376823048")
Decimal('52.70517376823048')
>>> Decimal("52.70517376823048000")
Decimal('52.70517376823048000')
>>> Rational(5270517376823048, 10**14)
658814672102881/12500000000000
在担心 XY 问题的浮点数低位的微小变化时请务必小心,因为理想情况下您想要的结果在总体精度范围内