告诉 sympy 假设 float 是精确的

问题描述 投票:0回答:1

我想将 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 数字是准确的?

floating-point sympy rational-number
1个回答
0
投票

如果您有定点而不是浮点值,则可以使用 builtin

Decimal
或将其重写为 SymPy
Rational

>>> Decimal("52.70517376823048")
Decimal('52.70517376823048')
>>> Decimal("52.70517376823048000")
Decimal('52.70517376823048000')
>>> Rational(5270517376823048, 10**14)
658814672102881/12500000000000

在担心 XY 问题的浮点数低位的微小变化时请务必小心,因为理想情况下您想要的结果在总体精度范围内

© www.soinside.com 2019 - 2024. All rights reserved.