基本上我写了这段代码..
import sympy
number = 5.62527e-11;
f = sympy.Symbol('f');
answer = sympy.solve(Eq(f,number),f);
print(answer);
正如预期的那样答案是" 5.62527e-11"
但是当我改变" 5.62527e-11"至" 5.62527e-67"并运行相同的代码...我得到了 [0.0]作为输出很尴尬......它适用于" e-11"但是因为" e-67"有人可以请说明为什么会发生这种情况..有人可以告诉我解决方案......我需要一个解决这个问题的方法
注意:上面的代码只是实际代码的一部分......我必须以同样的方式运行它......所以有人可以帮我处理这个数字吗?
提前致谢
答案 0 :(得分:1)
这是SymPy中的一个错误。请参阅https://stackoverflow.com/a/22574099/161801和https://github.com/sympy/sympy/issues/7322。
答案 1 :(得分:0)
浮点数的限制是它们只能精确到小数位数。我自己对你的问题感到好奇并找到https://docs.python.org/3/tutorial/floatingpoint.html
答案 2 :(得分:0)
使用符号代替数字(如有必要,请在最后替换):
>>> from sympy import *
>>> number = Symbol('5.62527e-11')
>>> f = sympy.Symbol('f');
>>> sympy.solve(Eq(f,number),f)
[5.62527e-11]